Я использую 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 с регистрацией и другими вещами. То же самое, если для класса новостей. Затем я строю отношения между этими двумя классами OneTo Many (Пользователь -> Новости), как показано в коде. Это также отлично работает без ошибок, и я могу добавить новости, которые принадлежат пользователю. Проблема заключается в том, когда я создаю форму с классом сущности, например:
->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 не существует
выясняю, что эта ошибка связана с предложением
$ форма-> bindRequest ($ запроса);
Проблема в том, что у меня есть две сущности в разных связках. Как я могу решить эту ошибку?
Edit:
Я решил проблему. Когда я бегу
php app/console doctrine:generate:entities User
php app/console doctrine:generate:entities News
затем Doctrine генерирует геттеры и сеттеры в User и News. В сущности News генерируется метод
/**
* 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;
}
Теперь все работает нормально. Спасибо за все ответы.