2
我正在创建symfony的web应用程序,并有问题与适当的dql查询收件箱。 这是实体导致问题的代码:Symfony一对多的查询
class Message
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @OneToOne(targetEntity="User")
* @JoinColumn(name="fromUser", referencedColumnName="id")
*/
protected $fromUser;
/**
* @ORM\Column(type="text")
*/
protected $fromEmail;
/**
* @return mixed
*/
/**
* @OneToOne(targetEntity="User")
* @JoinColumn(name="toUser", referencedColumnName="id")
*/
protected $toUser;
/**
* @ORM\Column(type="text",length=255)
*/
protected $subject;
/**
* @ORM\Column(type="datetimetz")
*/
protected $date;
/**
* @ORM\Column(type="text")
*/
protected $toEmail;
/**
* @ORM\Column(type="text")
*/
protected $content;
/**
* @ORM\Column(type="boolean")
*/
protected $sent;
/**
* @ORM\Column(type="boolean")
*/
protected $spammed;
/**
* @ManyToMany(targetEntity="View")
* @JoinTable(name="messages_views",
* joinColumns={@JoinColumn(name="message_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="view_id", referencedColumnName="id", unique=true)}
* )
*/
protected $view;
class View extends CollectionType
{
public function __construct($user)
{
$this->user = $user;
$this->trashed = false;
$this->deleted = false;
$this->seen = false;
}
/**
* @ORM\Column(type="boolean")
*/
protected $trashed;
/**
* @ORM\Column(type="boolean")
*/
protected $deleted;
/**
* @ORM\Column(type="boolean")
*/
protected $seen;
/**
* @ManyToOne(targetEntity="User")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
}
$视图类的ArrayCollection()和一对多的关系。 我想选择字段“其中$ toUser =:我”,其中包含$ view其中$ view-> user =:me和$ view-> trashed = false“(如果有两个$视图的话/预期)选择首次发现)提前 感谢您的时间
编辑: 目前,我有这样的事情
$get = $this->getEntityManager()
->createQuery('
SELECT m
FROM MonoAdminBundle:Message m
WHERE m.userTo = :me AND m.sent = true
AND
ORDER BY m.date DESC
')
->setParameter('me', $me->getId())->getArrayResult();
$ret = new \Doctrine\Common\Collections\ArrayCollection();
foreach ($get as $message) {
if ($message->getSpammed() === false) {
foreach ($message->getView() as $view) {
if ($view->getUser() == $me) {
if ($view->getTrashed() === false) {
$ret->add($message);
}
}
}
}
}
但正如我想使用分页程序是不是好主意。
感谢您的帮助:) – npower