1

我在 Sonata 媒体包中遇到了这个奇怪的问题。

基本上,我有一个可以有很多图片的练习。

我的练习映射(它是法语)是:

 /**
  * @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. 当我运行时:php app/console doctrine:generate:entities Application\Sonata\MediaBundle:Media 我在 Media 实体中看不到任何用于 Exercice 的 setter 或 getter。
    1. 我在探查器中收到此错误:

Acme\AcmeBundle\Entity\Exercice#medias 关联是指不存在的拥有方字段 Application\Sonata\MediaBundle\Entity\Media#exercice。

config 的相关部分:

orm: auto_generate_proxy_classes: "%kernel.debug%" auto_mapping: true 映射: ApplicationSonataMediaBundle: ~ SonataMediaBundle: ~

我究竟做错了什么 ?

谢谢

4

1 回答 1

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" />

它工作得很好。

于 2015-10-07T19:02:06.150 回答