2011-11-11 73 views
1

我正在嘗試在Doctrine 2.1中創建雙向一對多關係。我將我的代碼與manual和其他examples進行了比較,但仍然看不到我做錯了什麼。我只看到一個空白的屏幕,所以很難調試。 (log_threshold = 4,但日誌中沒有錯誤)。雙向一對多

我有這兩個表:

用戶

id 
name 

id 
items 

這裏是我的兩個模型(簡稱):

/** 
* @Entity 
* @Table(name="user") 
*/ 
class User 
{ 
    /** 
    * @Id 
    * @Column(type="integer", nullable=false) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @OneToMany(targetEntity="Cart", mappedBy="user_id") 
    */ 
    private $carts; 
} 

/** 
* @Entity 
* @Table(name="cart") 
*/ 
class Cart 
{ 
    /** 
    * @Id 
    * @Column(type="integer", nullable=false) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ManyToOne(targetEntity="User", inversedBy="carts") 
    */ 
    private $user; 
} 

然後我嘗試將它們鏈接

$user = $this->em->find('models\User', 8); 

$cart = new models\Cart(); 
$user->getCarts()->add($cart); 
$cart->setOwner($user); 

$this->em->persist($cart); 
$this->em->flush(); 

在這裏,我得到一個空白屏幕。 沒有一對多它工作正常。

+0

'$ user-> getCarts() - > add($ cart);'不起作用。你必須在User實體中創建一個方法addCart() – Nanocom

+0

是的,我有getCarts()和setOwner()。沒有em-> flush()可以正常工作。 – PiTheNumber

回答

0

好的,我想出了自己。訣竅是顯示錯誤消息:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

我需要用值填充一些字段。不允許爲空。 DOH!