【问题标题】:Doctrine says a field doesn't exist when it does - Symfony2教义说一个字段不存在,但它确实存在 - Symfony2
【发布时间】:2014-05-08 02:57:45
【问题描述】:

我有一个实体:

...

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

    ...

但是当我尝试在学说查询中使用 user_role_id 时,我得到了这个错误:

[语义错误] 'user_role_id' 附近的第 0 行,第 42 列:错误:类 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 中看到它。

有人知道为什么教义不承认它吗?

【问题讨论】:

  • 这是教义,您要编写 DQL 而不是 SQL,并且您需要使用实体中定义的字段名称而不是列名称;所以在您的查询中只需使用r.id 而不是r.user_role_id
  • 啊,谢谢。我认为需要使用 SQL 列名。干杯
  • 没问题;我将其作为答案提供 DQL 文档的链接,希望对您有所帮助

标签: symfony doctrine


【解决方案1】:

这是原则,您要编写 DQL 而不是 SQL,并且您需要使用实体中定义的字段名称而不是列名称。
所以在您的查询中只需使用r.id 而不是r.user_role_id

看看DQL in Doctrine

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多