2012-04-26 3 views
0

マイコード:これはDoctrine 2.2 Foreign Key Bugですか?

 $item = new Entity\Item(); 

     $item->setAccountId($account["id"]); 
     $item->setCategory((string)$data->category); 
     $item->setRegion((string)$data->region); 
     $item->setFlag(0); 
     $item->setRank(0); 
     $item->setPhone(""); 
     $item->setEmail(""); 
     $item->setURL((string)$data->url); 
     $item->setTags($tags); 

     //var_dump($item); 
     //die(); 

     $this->em->persist($item); 
     $this->em->flush(); 
     $this->em->clear(); 

注釈関係:

///////////////////////////////////////////////////////////////////////// 
// Relations              // 
///////////////////////////////////////////////////////////////////////// 

/** 
* @ManyToOne(targetEntity="Account", inversedBy="items") 
* @JoinColumn(name="account_id", referencedColumnName="id") 
*/ 
private $account; 

///////////////////////////////////////////////////////////////////////// 
// ForeingKey               // 
///////////////////////////////////////////////////////////////////////// 

/** 
* @Column(type="integer") 
*/ 
protected $account_id; 

私は古い教義(2.0に)コードワークを使用している場合、私は2.2に設定されている場合、コードこの例外をスロー:

SQLSTATE [23000]:整合性制約違反:1048列 'account_id'はNULLにできません。

2.2では、Chieldエンティティを挿入するために親エンティティを使用する必要がありますか?

+0

あなたは '$ account [" id "]'がヌルではないと確信していますか? –

答えて

0

Doctrine2の観点からは、オブジェクトは外部キーがない場所にあるオブジェクトグラフを形成する必要があります。このため、私はあなた

  • が、それは私はそれがでたかどうかはわかりません2.0

で働いていたと言うの外部キー あるATTRIBUTE_ID性質を持っていること、それは本当に奇妙見つけます2.0では、私はプロパティで関連オブジェクトのIDを持つことを覚えていません。

したがって、$ account_idプロパティを削除し、$ item-> setAccount($ account)を使用する必要があります。ここで、$ accountはAccountクラスのオブジェクトで、Doctrineが関係を正しく処理できるようにします。あなたはまた、Doctrineはコマンドを使用してあなたのためのエンティティのスケルトンを生成させる試すことができます

php doctrine.php orm:generate-entities /tmp/entites 

し、/ tmp /エンティティで生成されたファイルをチェックし、あなたがどのように見えるべきかが表示されます。

関連する問題