4
Elloo,我有两个主义实体,我试图做左连接,但是我收到一条消息“错误:类GR \ Entity \ AccountEvents没有名为Accounts的关联”。我已经看过其他解决方案在stackoverflow然而没有帮助。Doctrine2实体关联有什么问题
这里是我的代码
<?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();
感谢
您应该将答案移到答案中。你可以 - 也可能应该 - 甚至接受你自己的答案。 – 2012-03-18 17:02:09
我认为你在混合概念。你不应该在对象上有外键。更重要的是,它看起来像你有多对多,因为事件有“$账户”。但我期望一个事件只有一个帐户。所以“$账户”,而不是“$账户”。为什么你的实体名称被称为“账户”而不是“账户”?为什么你不使用普通的DQL而不是查询生成器?太多的事情要解决... – 2012-03-19 02:13:40