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