运行查询时DQL关联错误

时间:2011-06-25 13:53:11

标签: php doctrine-orm dql

我是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;
       ...
    }

感谢您的帮助!

1 个答案:

答案 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映射属性。您可能必须在这些更改后重新创建数据库架构。