Symfony2, Sonata MediaBundle: добавить новые поля в таблицу

Я пытаюсь добавить 4 новых поля в Sonata MediaBundle для GalleryHasMedia.

Я правильно переопределяю GalleryHasMediaAdmin :

GalleryHasMedia

Чтобы переопределить его, я добавил в services.yml эту строку:

parameters:
    sonata.media.admin.gallery_has_media.class: Application\Sonata\MediaBundle\Admin\GalleryHasMediaAdmin

Мне пришлось создавать методы вручную (getName и еще), так как php app/console doctrine:generate:entities ApplicationSonataMediaBundle:GalleryHasMedia, по-видимому, не заботится о моих новых полях, установленных в моей пользовательской сущности Application\Sonata\MediaBundle\Entity\GalleryHasMedia.

Кроме того, --dump-sql возвращает «Нечего обновлять». Но методы (getName и прочее) корректно распознаются в админке Сонаты, так почему бы не новые поля?

здесь моя пользовательская сущность:

<?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_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

Я использую автоматическое сопоставление, поэтому мой пользовательский объект правильно сопоставлен:

[OK] Application\Sonata\MediaBundle\Entity\GalleryHasMedia

здесь фактическая таблица (таблица сонаты по умолчанию):

Таблица Sonata по умолчанию

Итак, есть идеи, почему я не могу добавить новые поля в таблицу Gallery_has_media?

ОБНОВЛЕНИЕ:

Я предполагаю, что это потому, что я использую аннотации. Как я могу продолжать использовать аннотации и синхронизировать их с моей базой данных?

Этот парень столкнулся с похожей проблемой проблема


person Brieuc    schedule 26.02.2015    source источник


Ответы (1)


Хорошо, я нашел ответ, правильно объясненный здесь.

Удаление Application/Sonata/MediaBundle/Resources/config/doctrine позволило мне использовать аннотации внутри моего пользовательского объекта.

person Brieuc    schedule 26.02.2015