0

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

感谢帮助!

4

1 回答 1

0

尝试在查询中将“on”替换为“with”。此外,您正在通过外部实体 (@OneToOne) 使用身份 (@Id),因此请确保您使用的是 Doctrine 2.1(已经处于候选发布状态),因为该功能在 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;
   ...
}

换句话说,您必须切换 mappedBy 和 inversedBy 映射属性,如此处所定义。在这些更改之后,您可能必须重新创建数据库模式。

于 2011-06-25T14:03:27.343 回答