Не удается добавить изображение с помощью SonataMediaBundle

Я хочу добавить к своему сообщению изображения, но у меня есть ошибка. В моих журналах

ОШИБКА. Не удалось создать объект: SonataTest\ModelBundle\Entity\Post Context: {"Exception":"Объект(Sonata\AdminBundle\Exception\ModelManagerException)","previous_exception_message":"Исключение произошло при выполнении 'INSERT INTO Post (заголовок , created_at, updated_at, body, media_id) VALUES (?, ?, ?, ?, ?)' с параметрами [\"FirstTitle\", \"2015-07-26 11:47:38\", \"2015- 07-26 11:47:38\", \"FirstTitle\", 15]:\n\nSQLSTATE[42S02]: базовая таблица или представление не найдены: 1146 Таблица 'sonata.Post' не существует"}

Мой config.yml

doctrine:
.......
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
        default:
            auto_mapping: true
            mappings:
                ApplicationSonataMediaBundle: ~
                SonataMediaBundle: ~

sonata_media:
 default_context: default
 db_driver: doctrine_orm
 contexts:
    default:
        providers:
            - sonata.media.provider.dailymotion
            - sonata.media.provider.youtube
            - sonata.media.provider.image
            - sonata.media.provider.file

        formats:
            small: { width: 100 , quality: 70}
            big:   { width: 500 , quality: 70}

cdn:
    server:
        path: /uploads/media # http://media.sonata-project.org/

filesystem:
    local:
        directory:  %kernel.root_dir%/../web/uploads/media
        create:     false

Моя сущность

 class Post
 {
  ..............
 /**
 * @var string
 *
 * @ORM\Column(name="body", type="text")
 */
private $body;

/**
 * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"all"})
 * @ORM\JoinColumn(name="media_id", referencedColumnName="id")
 */
private $img;
........
}

Мой контроллер

class PostAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('title', 'text', array('label' => 'Post Title'))
        ->add('body')
        ->add('img', 'sonata_media_type', array('provider' => 'sonata.media.provider.image',
            'context'  => 'posts'))
    ;
}
.....
}

Что я делаю неправильно? В моей БД у меня есть таблицы post и media


person Community    schedule 26.07.2015    source источник


Ответы (1)


Может возникнуть проблема с именем вашей таблицы, вы не добавили аннотацию @ORM\Table(name="") в свою сущность, а в базе данных может быть имя таблицы post (в нижнем регистре), но когда соната/доктрина генерирует запрос в отсутствие @ORM\Table, она использует сущность имя, которое Post с заглавной буквы P, если это так, вы можете предоставить таблицу в своей организации

/**
 * Post
 *
 * @ORM\Table(name="post")
 * @ORM\Entity
 */
class Post {
    //..............
    /**
     * @var string
     *
     * @ORM\Column(name="body", type="text")
     */
    private $body;

    /**
     * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"all"})
     * @ORM\JoinColumn(name="media_id", referencedColumnName="id")
     */
    private $img;
    //........
}

21.2.34. @Table

person M Khalid Junaid    schedule 26.07.2015