我正在尝试执行一个查询,该查询返回已批准但未被当前用户预订的事件。
当我执行此查询时,我没有返回任何事件,它应返回当前用户未预订的事件。
public function getAvailableEvents(UserInterface $user)
{
$q = $this->getEntityManager()->createQuery('
select v from Tsk\FEBundle\Entity\Event v
left join v.attendance a where a.id != :user
and v.is_approved = true
');
$q->setParameter("user", $user);
return $q->execute();
}
以下是此关系的两个实体User
和Event
特定部分。
User
:
/**
* @ORM\ManyToMany(targetEntity="Event", inversedBy="attendance", cascade={"persist", "remove"})
* @ORM\JoinTable(name="users_events",
* joinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
* )
*/
protected $booked_events;
Event
实体:
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="booked_events")
*/
protected $attendance;
答案 0 :(得分:1)
如上所述,问题似乎出现在查询中。如果您想获得任何人都没有参加的活动,您可以使用WHERE a IS NULL
条件。