2013-04-14 10 views
5

私はエンティティ 'view'に対してOneToManyを持つエンティティ 'listing'を持っていますが、これらのキーはリストのIDを保持するview.content_idですが、それは他のエンティティにも関係しますDoctrine2 OneToMany mappedByなし

/** 
* @var Listing 
* 
* @ORM\ManyToOne(targetEntity="\Acme\Bundle\Entity\Listing", inversedBy="views") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="content_id", referencedColumnName="id") 
* }) 
*/ 
private $listing; 

viewエンティティを保存するときにcontent_idがnullになるため、ビューにはブレーキがかかります。

どうすれば修正できますか?側をリストに

関係:いくつかの '表示' の結果を判別したContentType:

/** 
* @var views 
* 
* @ORM\OneToMany(targetEntity="\Acme\Bundle\Entity\View", mappedBy="listing") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="id", referencedColumnName="content_id") 
* }) 
*/ 
private $views; 

私はListing.viewsに参加し、CONTENT_TYPE = WITH追加することにより、クエリを作ってるんです。

+0

エラーは、 'cascade = {" persist "}'を使用するよう指示していませんか? – cheesemacfly

+0

エラーはありませんが、これは有効な方法です。ただし、 'view'を保存すると、content_typeフィールドはこの列を指す2つの注釈があるため、nullになります。 – Paxton

+0

通常、第2の 'JoinColumns'または' JoinColumn'アノテーションの必要はありません.1つの 'owner'と1つの' inverse'サイドがあるからです。私の推測では、あなたのコード内のそれらのアノテーションは何らかの矛盾を引き起こしているので、Doctrineはどのサイトがどのサイトであるかを解決できないということです... –

答えて

0

私はパーティーにかなり遅れていますが、他人を助けると答えてくれたと思いました。

2つのエンティティ間に確立した関係のため、オブジェクトをFK値ではなくそのプロパティに割り当てる必要があります。そのような:

$listing = $em->getRepository('Acme\Bundle\Entity\Listing') 
       ->find($content_id); 
$view->setListing($listing); 

そしてません:もちろん

$view->setListing($content_id); 

、それは何か他のものであることが判明した場合、私は知りたいだろう。

:^)

+0

残念ながら、解決策は、継承マッピング/ディスクリミネータを使用することでした。 – Paxton

関連する問題