doctrine2实体关联有什么问题

时间:2012-03-18 00:54:04

标签: zend-framework doctrine-orm

Elloo,我有两个学说实体,我试图做左连接但是我收到一条消息“错误:类GR \ Entity \ AccountEvents没有名为Accounts的关联”。我已经查看了stackoverflow上的其他解决方案,但没有人帮助过。

这是我的代码

<?php
namespace GR\Entity;
/**
 * 
 * @Table(name="accounts")
 * @Entity
 */
class Accounts
{
    /**
     *
     * @var integer $id
     * @Column(name="id", type="integer",nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @Column(type="string",length=255,nullable=false)
     * @var string
     */
    private $name;

    /**
     * @Column(type="string",length=255,nullable=false)
     * @var string
     */
    private $email;

    /**
     * @Column(type="string",length=255,nullable=false)
     * @var string
     */
    private $password;

    /**
     * @Column(type="datetime",nullable=false)
     * @var datetime
     */
    private $created_at;

    /**
     * @OneToMany(targetEntity="AccountEvents", mappedBy="Accounts") 
     */ 
    private $accountevents;  

    public function __get($property)
    {
        return $this->$property;
    }

    public function __set($property,$value)
    {
        $this->$property = $value;
    }
}

..和

<?php
namespace GR\Entity;
/**
 * 
 * @Table(name="account_events")
 * @Entity
 */
class AccountEvents
{
    /**
     *
     * @var integer $id
     * @Column(name="id", type="integer",nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;


    /**
      * @var Accounts $accounts
      *
      * @Column(name="account_id", type="integer", nullable=false)
      * @ManyToOne(targetEntity="Accounts", inversedBy="accountevents")
      * @JoinColumn(name="accounts_id", referencedColumnName="id")
      */
    private $accounts;

    /**
     * @Column(type="string",length=255,nullable=true)
     * @var string
     */
    private $event;

    /**
     * @Column(type="datetime",nullable=false)
     * @var datetime
     */
    private $created_at;


    public function __get($property)
    {
        return $this->$property;
    }

    public function __set($property,$value)
    {
        $this->$property = $value;
    }
}

..和我的查询

$query = $this->em->createQueryBuilder()
                       ->select('a, e')
                       ->from('GR\Entity\AccountEvents', 'e')
                       ->leftJoin('e.Accounts', 'a')
                       ->query();


$results = $query->getResult();

提前致谢

1 个答案:

答案 0 :(得分:3)

我已经解决了,下面是解决方案(我使用的是ZF 1.11,教义2和nolasnowball库)

在帐户实体更改

/**
 * @OneToMany(targetEntity="AccountEvents", mappedBy="accounts")
 * @var \Doctrine\Common\Collections\Collection
 */
private $accountevents;

在AccountEvents实体更改

/**
 * @ManyToOne(targetEntity="Accounts")
 * @JoinColumn(name="accounts_id", referencedColumnName="id")
 * @var GR\Entity\Accounts
 **/
private $accounts;

获取结果集

$query = $this->em->createQueryBuilder()
                   ->select('a, e')
                   ->from('GR\Entity\Accounts', 'a')
                   ->leftJoin('a.accountevents', 'e');

$results = $query->getQuery()->getResult();

这是完整代码http://pastie.org/3626654