2011-07-01 65 views
12

我無法弄清楚如何我可以有2捆綁之間的實體關係。Symfony2 - Doctrine - 2捆綁之間的實體關係

最近我一直到目前爲止的成功是這樣的:

用戶實體

<?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; 


    //... 

文章實體

<?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; 

    //... 

在生成實體和更新數據庫,我沒有得到任何錯誤,並在數據庫中正確設置關係。

但當我嘗試獲取的文章中,我得到這樣的:

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

注意,用戶實體處於AuthBundle條和第實體NewsBundle。

謝謝。

回答

8

在定義一對多,多對一的關係時,您需要指定實體類的名稱。仍然指定Acme\AuthBundle\Entity\User而不是Aief\AuthBundle\Entity\User作爲targetEntity

文章和文章庫相同。

+0

對不起,錯字錯誤,我實際上已將Aief更改爲Acme只是爲了發帖(我會編輯它)。所以不是這樣。 – LBridge

+0

問題在於它在AuthBundle中查找文章實體時,它應該在NewsBundle中查找。我不明白爲什麼。 – LBridge

+0

目前您是否對Doctrine使用任何緩存?嘗試清潔它。刪除生成的代理類也可以包含錯誤的類名稱。 – Gedrox