0

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

错误 - 无法创建对象:SonataTest\ModelBundle\Entity\Post 上下文:{"exception":"Object(Sonata\AdminBundle\Exception\ModelManagerException)","previous_exception_message":"执行 'INSERT INTO Post (title , created_at, updated_at, body, media_id) VALUES (?, ?, ?, ?, ?)' with params [\"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'))
    ;
}
.....
}

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

4

1 回答 1

0

您的表名可能存在大小写问题,您没有@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

于 2015-07-26T13:54:01.570 回答