如何解决运行查询时出现DQL关联错误
| 我是DQL和准则2的新手,所以请耐心等待。 我有这个查询:select c,m from A10\\CrmBundle\\Entity\\Crm c inner join c.irszam m on m.irszam = c.cim1irszam where c.kod = ?1
我收到此错误:
[Semantical Error] line 0,col 64 near \'m on m.irszam\': Error: Class A10\\CrmBundle\\Entity\\Crm has no association named irszam
实体:
class Crm
{
/**
* @Id
* @OneToOne(targetEntity=\"megye\",mappedBy=\"kod\")
*
*/
protected $kod;
...
}
class Megye
{
...
/**
* @OneToOne(targetEntity=\"crm\",inversedBy=\"irszam\")
* @JoinColumn(name=\"irszam_id\",referencedColumnName=\"id\")
* @Column(type=\"integer\")
*/
protected $irszam;
...
}
感谢帮助!
解决方法
尝试在查询中将\“ on \”替换为\“ with \”。另外,您通过外部实体(@OneToOne)使用身份(@Id),因此请确保使用的是Doctrine 2.1(已经处于Release Candidate状态),因为该功能在2.0.x系列中不可用。
另外,我认为您在关联映射中存在错误。我认为您真正想做的是:
class Crm
{
/**
* @Id
* @OneToOne(targetEntity=\"megye\",mappedBy=\"irszam\")
*
*/
protected $kod;
...
}
class Megye
{
...
/**
* @OneToOne(targetEntity=\"crm\",inversedBy=\"kod\")
* @JoinColumn(name=\"irszam_id\",referencedColumnName=\"id\")
* @Column(type=\"integer\")
*/
protected $irszam;
...
}
换句话说,您必须切换此处定义的mapledBy和inversedBy映射属性。这些更改之后,您可能必须重新创建数据库模式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。