我是DQL和doctrine 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;
...
}
感谢您的帮助!
答案 0 :(得分:0)
尝试在查询中将“on”替换为“with”。此外,您使用的是identity (@Id) through foreign entities (@OneToOne),因此请确保您使用的是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;
...
}
换句话说,您必须按照定义的here切换mappedBy和inversedBy映射属性。您可能必须在这些更改后重新创建数据库架构。