Symfony 不同束中的实体

Symfony 不同束中的实体,symfony,entities,Symfony,Entities,我使用的是Symfony 2,在不同的捆绑包中有两个实体,如: //this class overrides fos_user class //User\UserBundle\Entity\User class User extends BaseUser { //.. /** * @ORM\OneToMany(targetEntity="News\AdminBundle\Entity\News", mappedBy="author_id") */

我使用的是Symfony 2,在不同的捆绑包中有两个实体,如:

//this class overrides fos_user class
//User\UserBundle\Entity\User
class User extends BaseUser
{
    //..

    /**
        * @ORM\OneToMany(targetEntity="News\AdminBundle\Entity\News", mappedBy="author_id")
        */
        protected $news_author;

    //...
}

//News\AdminBundle\Entity\News
class News
{
    //...

    /**
        * @ORM\ManyToOne(targetEntity="\User\UserBundle\Entity\User", inversedBy="news_author")
        * @ORM\JoinColumn(name="author_id", referencedColumnName="id")
        */
        protected $news_author;

    //...
}
两个类(实体)都可以正常工作。我已经成功地安装了fos_用户包,包括注册和其他内容。新闻课也一样。然后,我在这两个类之间构建一对多(User->News)的关系,如代码所示。这也很好,没有错误,我可以添加属于用户的新闻。问题是当我使用实体类构建表单时,如:

->add('year', 'entity', array(
    'class' => 'NewsAdminBundle:News',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
                    ->groupBy('u.year')
                        ->orderBy('u.year', 'DESC');
         },))
这张表格显示了新闻发布的年份(如存档)。年份显示良好,但当我提交(发布)表格时,我出现了错误:

类User\UserBundle\Entity\News不存在

我发现这个错误与句子有关

$form->bindRequest($request)

问题是因为我在不同的包中有两个实体。如何解决此错误

编辑: 我解决了这个问题。当我跑的时候

php app/console doctrine:generate:entities User
php app/console doctrine:generate:entities News
然后在用户和新闻中生成getter和setter。在实体新闻中,它生成方法

/**
 * Add news_author
 *
 * @param User\UserBundle\Entity\News $newsAuthor
 */
public function addNews(User\UserBundle\Entity\News $newsAuthor)
{
    $this->news_author[] = $newsAuthor;
}
我没有注意到这个方法,我把它改成了这个

/**
 * Add news_author
 *
 * @param News\AdminBundle\Entity\News $newsAuthor
 */
public function addNews(News\AdminBundle\Entity\News $newsAuthor)
{
    $this->news_author[] = $newsAuthor;
}
现在一切正常。谢谢你的回答。

   /**
    * @ORM\ManyToOne(targetEntity="User\UserBundle\Entity\User", inversedBy="news_author")
    * @ORM\JoinColumn(name="author_id", referencedColumnName="id")
    */
    protected $news_author;

您必须删除前缀反斜杠–请参见

'class'=>'News\\AdminBundle\\Entity\\News'中的注释,而不是'class'=>'NewsAdminBundle:News'更改某些内容?我更改了它,但仍然不起作用。我最终认为此反斜杠可以解决我的问题,但错误是相同的。我还清除了缓存。现在我用--no debug清除了缓存,然后它向我抛出一个错误:[ReflectionException]Class User\UserBundle\Entity\News不存在谢谢你的回答。当您告诉我粘贴所有源代码时,我发现错误在addNews方法中。我甚至在发现这个错误之前检查了几次代码。再次感谢。我用正确的代码编辑了上面的问题。