Php Symfony2,Sonata MediaBundle:向表中添加新字段

Php Symfony2,Sonata MediaBundle:向表中添加新字段,php,symfony,doctrine-orm,sonata,sonata-media-bundle,Php,Symfony,Doctrine Orm,Sonata,Sonata Media Bundle,我正在尝试为GalleryHasMedia在Sonata MediaBundle中添加4个新字段 我正确覆盖GalleryHasMediaAdmin: 为了覆盖它,我在services.yml中添加了这一行: parameters: sonata.media.admin.gallery_has_media.class: Application\Sonata\MediaBundle\Admin\GalleryHasMediaAdmin 我必须手动创建方法getName和其他方法,因为ph

我正在尝试为GalleryHasMedia在Sonata MediaBundle中添加4个新字段

我正确覆盖GalleryHasMediaAdmin:

为了覆盖它,我在services.yml中添加了这一行:

parameters:
    sonata.media.admin.gallery_has_media.class: Application\Sonata\MediaBundle\Admin\GalleryHasMediaAdmin
我必须手动创建方法getName和其他方法,因为php应用程序/控制台原则:generate:entities applicationonatamediabundle:GalleryHasMedia 显然不关心自定义实体应用程序\Sonata\MediaBundle\entity\GalleryHasMedia中设置的新字段

同样-转储sql不会返回任何要更新的内容。但是getName和else方法在Sonata admin中可以正确识别,那么为什么不使用新字段呢

这里是我的自定义实体:

<?php
namespace Application\Sonata\MediaBundle\Entity;

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

/**
 * @ORM\Entity
 * @ORM\Table(name="media__gallery_media")
 */
class GalleryHasMedia extends BaseGalleryHasMedia
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=64, nullable=false, name="name")
     **/
    private $name;

    /**
     * @ORM\Column(type="string", length=64, nullable=false, name="activity")
     **/
    private $activity;

    /**
     * @ORM\Column(type="text", nullable=false, name="description")
     */
    private $description;

    /**
     * @ORM\Column(type="string", length=255, nullable=false, name="code")
     **/
    private $link;

    /**
     * Get id
     *
     * @return integer $id
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     * @return GalleryHasMedia
     */
    public function setName($name)
    {
         $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set activity
     *
     * @param string $activity
     * @return GalleryHasMedia
     */
    public function setActivity($activity)
    {
        $this->activity = $activity;

        return $this;
    }

    /**
     * Get activity
     *
     * @return string
     */
    public function getActivity()
    {
        return $this->activity;
    }

    /**
     * Set description
     *
     * @param string $description
     * @return GalleryHasMedia
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

    /**
     * Get description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set link
     *
     * @param string $link
     * @return GalleryHasMedia
     */
    public function setLink($link)
    {
        $this->link = $link;

        return $this;
    }

    /**
     * Get link
     *
     * @return string
     */
    public function getLink()
    {
         return $this->link;
    }

}
我正在使用自动映射,以便正确映射我的自定义实体:

[确定]应用程序\Sonata\MediaBundle\Entity\GalleryHasMedia

这里是实际表格sonata的默认表格:

你知道为什么我不能在gallery\u has\u media表中添加任何新字段吗

更新:

我猜这是因为我在使用注释。如何继续使用注释并使其与数据库同步


这家伙遇到了一个类似的问题

好吧,我发现答案解释正确

删除Application/Sonata/MediaBundle/Resources/config/doctrine允许我在自定义实体中使用注释

sonata_media:
    # if you don't use default namespace configuration
    class:
        media: Application\Sonata\MediaBundle\Entity\Media
        gallery: Application\Sonata\MediaBundle\Entity\Gallery
        gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia