无法使用SonataMediaBundle

时间:2015-07-26 08:56:22

标签: symfony sonata-admin sonata-media-bundle

我想添加到我的帖子图片,但我有错误。在我的日志中

  

错误 - 无法创建对象:SonataTest \ ModelBundle \ Entity \ Post   上下文:{“exception”:“Object(Sonata \ AdminBundle \ Exception \ ModelManagerException)”,“previous_exception_message”:“执行'INSERT INTO Post(标题,created_at,updated_at,body,media_id)VALUES(?,?)时发生异常,?,?,?)'与params [\“FirstTitle \”,“2015-07-26 11:47:38 \”,“2015-07-26 11:47:38 \”,“FirstTitle \“,15]:\ n \ 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'))
    ;
}
.....
}

我做错了什么?在我的数据库中我有表格和媒体

1 个答案:

答案 0 :(得分:0)

您的表名可能存在案例问题,您尚未在实体中添加@ORM\Table(name="")注释,而在数据库中可能有表名post(小写)但是当奏鸣曲时/ doctrine在没有@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