Php 运行查询时出现DQL关联错误

Php 运行查询时出现DQL关联错误,php,doctrine-orm,dql,Php,Doctrine Orm,Dql,我是DQL和条令2的新手,所以请耐心等待。 我有一个疑问: 从A10\CrmBundle\Entity\Crm c internal join c.irszam m m.irszam=c.cim1irszam中选择c,m,其中c.kod=?1 我得到了这个错误: [语义错误]第0行,m.irszam上“m”附近的第64列:错误:类A10\CrmBundle\Entity\Crm没有名为irszam的关联 实体: class Crm { /** * @

我是DQL和条令2的新手,所以请耐心等待。 我有一个疑问:

从A10\CrmBundle\Entity\Crm c internal join c.irszam m m.irszam=c.cim1irszam中选择c,m,其中c.kod=?1

我得到了这个错误:

[语义错误]第0行,m.irszam上“m”附近的第64列:错误:类A10\CrmBundle\Entity\Crm没有名为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;
       ...
    }

谢谢你的帮助

尝试将查询中的替换为。另外,您正在使用,因此请确保您使用的是已处于状态的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映射属性。在这些更改之后,您可能必须重新创建DB模式。

我使用的是doctrine 2.1.0RC2版本。我用替换,但不幸的是没有解决问题。也许,这是关联映射问题吗?嗨,我想是的,我更新了我的答案来反映这一点。尽管如此,我还是保留了我最初的建议,但请告诉我进展如何。我按照你的建议做了,但不起作用。我不太理解关联映射。但在postgreSQL中,此查询正在运行。请注意,DQL与普通SQL不同,因此如果使用另一个,则不能使用其中一个。在DQL中,您考虑的是对象,而不是DB表。仔细查看DQL文档: