2013-04-14 18 views
5

Tôi có một danh sách 'thực thể' với OneToMany để thực thể 'xem', khóa giữa là view.content_id giữ ID của danh sách, tuy nhiên, nó cũng liên quan đến các thực thể khác, do đó bằng cách thêmDoctrine2 OneToMany không có ánh xạBởi

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

Để chế độ xem nó phanh vì khi lưu thực thể chế độ xem content_id trở thành rỗng.

Làm cách nào để khắc phục sự cố?

Relation đứng về phía niêm yết:

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

Tôi đang làm cho các truy vấn bằng cách tham gia các Listing.views và thêm VỚI content_type =: ContentType mà phân biệt đối xử kết quả một số 'xem'.

+0

Lỗi bạn nhận được không cho bạn biết sử dụng 'cascade = {" persist "}'? – cheesemacfly

+0

Không có lỗi, đây là một cách tiếp cận hợp lệ. Tuy nhiên, khi lưu 'view' trường content_type trở thành null vì có hai chú thích trỏ đến cột này. – Paxton

+0

Thông thường không cần chú thích 'JoinColumns' hoặc' JoinColumn' thứ hai vì có một 'chủ sở hữu' và một bên' nghịch đảo'. Tôi đoán là những chú thích trong mã của bạn đang gây ra một số loại xung đột nên Doctrine không thể giải quyết trang nào là ... –

Trả lời

0

Tôi đến khá trễ với bữa tiệc, nhưng tôi nghĩ tôi sẽ trả lời trong trường hợp nó giúp người khác.

Do mối quan hệ bạn đã thiết lập giữa hai thực thể, bây giờ bạn phải gán một đối tượng cho thuộc tính đó thay vì giá trị FK. Cũng giống như vậy:

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

Và không:

$view->setListing($content_id); 

Tất nhiên, nếu nó bật ra được cái gì khác, tôi tò mò muốn được biết.

: ^)

+0

Thật không may là không. Giải pháp là sử dụng Inheritance Mapping/Discriminators. – Paxton

Các vấn đề liên quan