【发布时间】: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 文档的链接,希望对您有所帮助