Symfony2 - Doctrine - отношение сущностей между двумя связками - PullRequest
12 голосов
/ 01 июля 2011

Я не могу понять, как у меня могут быть отношения сущностей между двумя связками.

Ближайший успех, которого я добился до сих пор, это:

Пользовательский объект :

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

Обратите внимание, что сущность User находится в AuthBundle, а сущность Article - в NewsBundle.

Спасибо.

1 Ответ

8 голосов
/ 01 июля 2011

Вам необходимо указать имя класса сущности при определении отношений один-ко-многим, многие-к-одному. Тем не менее вы указываете Acme\AuthBundle\Entity\User, а не Aief\AuthBundle\Entity\User как targetEntity.

То же самое для статьи и репозитория статей.

...