2015-02-26 3 views
1

Я пытаюсь добавить 4 новых поля в Sonata MediaBundle для GalleryHasMedia.Symfony2, Sonata MediaBundle: добавить новые поля в таблицу

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

GalleryHasMedia

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

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

Я должен был создавать методы вручную (GetName и еще) поскольку доктрина php app/console: generate: entities ApplicationSonataMediaBundle: GalleryHasMedia , по-видимому, не заботится о моих новых полях, установленных в моей пользовательской сущности. Приложение \ Sonata \ MediaBundle \ Entity \ Gal leryHasMedia.

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

здесь мой пользовательский объект:

<?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; 
    } 

} 

И я правильно набор, как сказано в их Documentation:

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] Применение \ Соната \ MediaBundle \ Entity \ GalleryHasMedia

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

Sonata's default table

Поэтому любые идеи, почему я не могу добавлять новые поля к столу gallery_has_media?

UPDATE:

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

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

ответ

0

Ладно, я нашел ответ правильно объяснил here.

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