Упражнение «Много медиа для одного» в пакете Sonata Media Bundle

Я столкнулся с этой странной проблемой с комплектом носителей Sonata.

По сути, у меня есть упражнение, в котором может быть много картинок.

Мое отображение Exercice (это французский язык):

 /**
  * @ORM\OneToMany(targetEntity="Application\Sonata\MediaBundle\Entity\Media", mappedBy="exercice")
  */
    private $medias;

Затем я иду в Application/Sonara/MediaBundle/Entity/Media.php и добавляю поле $exercice:

namespace Application\Sonata\MediaBundle\Entity;

use Sonata\MediaBundle\Entity\BaseMedia as BaseMedia;
use Doctrine\ORM\Mapping as ORM;


class Media extends BaseMedia
{
    /**
     * @var integer $id
     */
    protected $id;

    /**
     * @var
     * @ORM\ManyToOne(targetEntity="Acme\AcmeBundle\Entity\Exercice", inversedBy="medias")
     */
    private $exercice;

Странные вещи происходят:

  1. When I run : php app/console doctrine:generate:entities Application\Sonata\MediaBundle:Media I don't see any setter or getter for Exercice inside Media entity.
    1. I get this error in profiler :

Ассоциация Acme\AcmeBundle\Entity\Exercice#medias относится к несуществующему полю Application\Sonata\MediaBundle\Entity\Media#exercice на стороне владельца.

Соответствующая часть конфигурации:

orm: auto_generate_proxy_classes: "%kernel.debug%" auto_mapping: true сопоставления: ApplicationSonataMediaBundle: ~ SonataMediaBundle: ~

Что я делаю не так ?

Спасибо


person Aysennoussi    schedule 07.10.2015    source источник


Ответы (1)


Хорошо, нашел решение. Мне пришлось изменить отображение из файла xml:

src/Application/Sonata/MediaBundle/Resources/config/doctrine/Media.orm.xml

Я добавил :

<many-to-one field="exercice" inversed-by="medias" target-entity="Acme\AcmeBundle\Entity\Exercice" />

и это работает просто отлично.

person Aysennoussi    schedule 07.10.2015