2012-01-28 17 views
0

私はItemエンティティとCategoryエンティティを持っています。 Itemには、1つのCategoryがあります。私のマッピングコードは次のようになります。関連付けを作成するには2つのエンティティ間の関連付けを作成するときに、エンティティの代わりにidを渡すことはできますか?

// Item.php 
/** 
* @ORM\ManyToOne(targetEntity = "Category") 
* @ORM\JoinColumn(name = "category_id", referencedColumnName = "id") 
*/ 
protected $category; 

、私は、このメソッドを使用します。

// Item.php 
public function setCategory(Category $category) { 
    $this->category = $category; 
} 

これは、限り、私は最初のDBからCategoryエンティティをフェッチとして正常に動作します。しかし、Categoryエンティティの代わりにIDを渡すことができるかどうか疑問に思っています。 JoinColumn category_idをスカラー値で手動で設定したいと思います。しかし、正弦category_idItemの実際のメンバーではありません。私はこれをどのように行うことができるのかよくわかりません。

答えて

2

使用getReference

$item->setCategory($em->getReference('Category', $id)); 
+0

例外、最終的に怠惰は、DBからオブジェクトをロードする際にこのアプローチは、そうでない場合、あなたは、データベース内のその識別子を持つカテゴリーがあることを確認している場合にのみ使用する必要があることに注意してください育てられるだろう。 – Ocramius

+0

@Ocramiusあなたはそれがデータベースにあることを決して確信できません;) – meze

+0

その場合、Doctrine \ ORM \ EntityNotFoundException例外をキャッチする準備ができているはずです。 – Ocramius

関連する問題