2011-11-11 9 views
1

私はDoctrine 2.1で双方向の1対多の関係を作成しようとしています。私のコードをmanualと他のexamplesと比較しても、私が間違っていることはまだ分かりません。空の画面しか表示されないので、デバッグは難しいです。 (log_threshold = 4ですが、ログにエラーはありません)。双方向1対多

私は、これらの2つのテーブルを持っている:

/** 
* @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; 
} 

ユーザー

id 
name 

カート

id 
items 

そしてここでは私の二つのモデル(ショート)であります

それから私は、私は空白の画面を取得ここで彼らに

$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(); 

をリンクしてみてください。 One-To-Manyなしで正常に動作します。

+0

'$ user-> getCarts() - > add($ cart);'は動作しません。ユーザーエンティティにメソッドaddCart()を作成する必要があります。 – Nanocom

+0

はい、getCarts()とsetOwner()があります。 em-> flush()を使わなくてもうまく動作します。 – PiTheNumber

答えて

0

私はそれを自分で考え出しました。そのトリックは、エラーメッセージを表示することでした:

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

いくつかのフィールドに値を入力する必要がありました。ヌルにすることは許されませんでした。 DOH!

関連する問題