如何将两个实体方法合并为一个

时间:2020-01-25 00:21:08

标签: php symfony methods

基于私人消息传递应用程序,我的用户实体当前有两种检索消息的方法:

一个获取用户发送的消息

/**
 * @ORM\OneToMany(targetEntity="App\Entity\MessagePrive", mappedBy="emetteur")
 */
private $messagesPrivesEmis;

/**
 * @return Collection|MessagePrive[]
 */
public function getMessagesPrivesEmis(): Collection {
    return $this->messagesPrivesEmis;
}

和另一个获取从其他用户收到的消息

/**
 * @ORM\OneToMany(targetEntity="App\Entity\MessagePrive", mappedBy="recepteur")
 */
private $messagesPrivesRecus;

/**
 * @return Collection|MessagePrive[]
 */
public function getMessagesPrivesRecus(): Collection {
    return $this->messagesPrivesRecus;
}

第一种方法获取emetteur等于用户ID的消息,而第二种方法获取recepteur等于用户ID的消息。两者都是Symfony的默认方法

是否可以“合并”这两种方法,以便在一个查询中获取用户发送和接收的所有消息?
还是应该使用自定义DQL?

1 个答案:

答案 0 :(得分:1)

public function getMerged(): Collection {
   return new ArrayCollection(
       array_merge(this->messagesPrivesEmis->toArray(), $this->messagesPrivesRecus->toArray())
   );
}