2011-07-01 50 views
12

Tôi không thể tìm ra cách tôi có thể có mối quan hệ thực thể giữa 2 gói.Symfony2 - Doctrine - Mối quan hệ thực thể giữa 2 nhóm

Gần nhất tôi đã từng đến thành công cho đến nay là thế này:

tài Entity:

<?php 
namespace Acme\AuthBundle\Entity; 
use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

use Symfony\Component\Validator\Constraints as Assert; 

use Doctrine\Common\Collections\ArrayCollection; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\generatedValue(strategy="AUTO") 
    */ 
    protected $id; 

    //... 

    /** 
    * @ORM\OneToMany(targetEntity="Acme\NewsBundle\Entity\Article", mappedBy="author") 
    */ 
    protected $articles; 


    //... 

Điều Entity:

<?php 
namespace Acme\NewsBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity(repositoryClass="Acme\NewsBundle\Entity\ArticleRepository") 
* @ORM\Table(name="articles") 
*/ 
class Article 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    //... 

    /** 
    * @ORM\ManyToOne(targetEntity="Acme\AuthBundle\Entity\User", inversedBy="articles") 
    */ 
    protected $author; 

    //... 

Khi tạo các đối tượng và cập nhật cơ sở dữ liệu, tôi không nhận được lỗi và mối quan hệ được đặt chính xác trong DB.

Nhưng khi tôi cố gắng để lấy các bài viết tôi có được điều này:

Class Acme\AuthBundle\Entity\Article does not exist 
500 Internal Server Error - ReflectionException 

Lưu ý rằng các tổ chức tài là trong AuthBundle và Điều thực thể trong NewsBundle.

Cảm ơn.

Trả lời

8

Bạn cần chỉ định tên của lớp thực thể khi xác định mối quan hệ nhiều, một-một. Tuy nhiên, bạn đang chỉ định Acme\AuthBundle\Entity\User không phải Aief\AuthBundle\Entity\UsertargetEntity.

Điều tương tự đối với Kho lưu trữ bài viết và bài viết.

+0

Xin lỗi, lỗi đánh máy, tôi thực sự đã thay đổi Aief thành Acme chỉ dành cho bài đăng (tôi sẽ chỉnh sửa bài đăng đó). Vì vậy, đó không phải là nó. – LBridge

+0

Vấn đề là nó đang tìm kiếm Thực thể Điều trong AuthBundle khi nó cần tìm trong NewsBundle. Tôi không hiểu tại sao. – LBridge

+0

Bạn có sử dụng bất kỳ bộ nhớ cache nào cho Doctrine hiện tại không? Hãy thử làm sạch nó. Loại bỏ các lớp proxy được tạo ra là tốt, những người có thể chứa tên lớp sai là tốt. – Gedrox

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