Doctrine说,当它出现时,一个领域并不存在 - Symfony2

时间:2014-05-08 02:57:45

标签: symfony doctrine

我有一个实体:

...

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

    ...

但是当我尝试在doctrine查询中使用user_role_id时,我收到此错误:

  

[语义错误]第0行,第42页'user_role_id'附近:错误:类   MyApp \ Model \ UserRole没有名为user_role_id的字段或关联

我使用的查询是:

$query = $this->getEntityManager()
    ->createQuery('SELECT r FROM Model:UserRole AS r WHERE r.user_role_id IN (:roles)')
    ->setParameter('roles', array_values($roles));

我肯定有一个user_role_id字段,因为我可以在phpMyAdmin中看到它。

有没有人知道为什么教义不承认呢?

1 个答案:

答案 0 :(得分:1)

这是一个学说,你想编写一个DQL而不是一个SQL,你需要使用实体中定义的字段名称而不是列名。
因此,在您的查询中,只需使用r.id代替r.user_role_id

查看DQL in Doctrine