2011-04-17 60 views
3

我在Zend 1.11中使用Doctrine-2.0.4。 Php映射器和實體是從MySQL DB生成的。現在我想將兩個表和查詢永遠只得到學說2加入協會沒有找到

[語義錯誤] 0行,列48附近的「e」:錯誤:實體類\用戶還沒有命名的關聯賬戶

查詢:

$query = $em->createQueryBuilder() 
    ->select('u') 
    ->from('\Entities\Users', 'u') 
    ->leftJoin('u.Accounts', 'a') 
    ->getQuery(); 
$info = $query->getResult(); 

在我的數據庫有兩個表:用戶,帳戶

  • 用戶公頃S場ID,帳戶ID
  • 帳戶具有域ID,資訊

Users.accountId有雙向one-to-one關聯到Accounts.id

<?php 
namespace Entities; 
/** 
* Users 
* 
* @Table(name="users") 
* @Entity 
*/ 
class Users 
{ 
    /** 
    * @var integer $id 
    * 
    * @Column(name="id", type="integer", nullable=false) 
    * @Id 
    * @GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 
    /** 
    * @var integer $accountid 
    * 
    * @Column(name="accountId", type="integer", nullable=false) 
    * @OneToOne(targetEntity="accounts", inversedBy="id") 
    * @JoinColumn(name="accounts_id", referencedColumnName="id") 
    */ 
    private $accountid; 
... 
} 
<?php 
namespace Entities; 
/** 
* Accounts 
* 
* @Table(name="accounts") 
* @Entity 
*/ 
class Accounts 
{ 
    /** 
    * @var integer $id 
    * 
    * @Column(name="id", type="integer", nullable=false) 
    * @Id 
    * @GeneratedValue(strategy="IDENTITY") 
    * @OneToOne(targetEntity="users", mappedBy="accountid") 
    */ 
    private $id; 
... 
} 

回答

4

,則應該更換$accountId財產在用戶實體$accounts,因爲它不是一個整數這是一個Accounts實體:

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

您當前的查詢不起作用,因爲沒有Accounts屬性。如果您進行以下的上述變化應該工作:

$query = $em->createQueryBuilder() 
    ->select('u') 
    ->from('\Entities\Users', 'u') 
    ->leftJoin('u.accounts', 'a') 
    ->getQuery(); 
$info = $query->getResult(); 
4

您不能同時使用@Column@JoinColumn

您應該刪除@Column線,它應該是作品!:

/** 
    * @var Accounts $accounts 
    * 
    * @OneToOne(targetEntity="Accounts", inversedBy="id") 
    * @JoinColumn(name="accounts_id", referencedColumnName="id") 
    */ 
private $accounts; 
+1

幾個小時的調試,幾秒鐘的找到答案。 10nx – 2014-06-23 19:04:04