如何对doctrine2使用'Is null'

时间:2013-09-22 01:43:54

标签: doctrine-orm

我有两个表,例如

class Lesson
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 *
 * @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\EvalMutor", mappedBy="lesson")
 */

private $evalM;
}
在EvalMutor中

class EvalMutor
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;


/**
 *
 * @ORM\ManyToOne(targetEntity="Acme\UserBundle\Entity\Lesson", inversedBy="evalM")
 * @ORM\JoinColumn(name="lesson", referencedColumnName="id")
 */

private $lesson;


/**
 * @ORM\Column(type="text",nullable=true)
 *
 */
private $comment;
}

某些课程的行有evalM,有些则没有。

我想要选择没有evalM的课程行。

SELECT p FROM UserBundle:Lesson p Where p.evalM is null

然而它会返回

A single-valued association path expression to an inverse side is not supported in DQL queries. Use an explicit join instead.   

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

首先,我猜这种关系不正确。当你提出OneToOne时,你已经建立了OneToMany关系。我在谈论$evalM的注释。

有关详细信息,请查看this