Команда Symfony2 "doctrine: schema: update" не обнаруживает изменения файла признаков, используемые в сущностях

у меня есть файл признаков с общим кодом между сущностями.

черта файла например:

<?php
namespace AcmeCmsBundleEntity;

use DoctrineORMMapping as ORM;

/**
* BaseHtml Trait
*
*/
trait BaseHtml
{

    /**
    * @var integer
    *
    * @ORMColumn(name="status", type="string", length=20)
    */
    private $status;

    /**
    * @var DateTime
    *
    * @ORMColumn(name="date", type="datetime")
    */
    private $date;

    public function setStatus($status)
    {
        $this->status = $status;

        return $this;
    }

    public function getStatus()
    {
        return $this->status;
    }

    public function setDate($date)
    {
        $this->date = $date;

        return $this;
    }

    public function getDate()
    {
        return $this->date;
    }

}

файл Entity пример:

<?php

namespace AcmeCmsBundleEntity;

use DoctrineORMMapping as ORM;

/**
* Page
*
* @ORMTable()
* @ORMEntity
* 
* 
*/
class Page
{

    use BaseHtml;


    /**
    * @var integer
    *
    * @ORMColumn(name="id", type="integer")
    * @ORMId
    * @ORMGeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * @var string
    *
    * @ORMManyToOne(targetEntity="ApplicationSonataMediaBundleEntityGallery") 
    */
    private $gallery;



    public function getId()
    {
        return $this->id;
    }


    public function setGallery(ApplicationSonataMediaBundleEntityGallery $gallery)
    {
        $this->gallery = $gallery;

        return $this;
    }


    public function getGallery()
    {
        return $this->gallery;
    }
}

но когда я изменяю аннотации файла признака или добавляю новые столбцы и выполняю "PHP app/console doctrine: schema: update":

Nothing to update - your database is already in sync with the current entity metadata.

мне нужно вручную изменить дату изменения всех файлов сущностей, которые используют файл признаков для get doctrine:schema:update.

Я пробовал с команды

php app/console doctrine:cache:clear-metadata
php app/console cache:clear

перед выполнением doctrine: schema: update, но без результата.

любая идея для не вручную обновлять файлы сущностей и доктрину: схема: обновление обнаружение обновлений сущностей при изменении файла признаков я потерял часть преимуществ совместного использования кода с признаками.

5 ответов


вы можете заставить это сделать:

php app/console cache:clear
php app/console doctrine:schema:update --force

может быть, я слишком поздно, но если вы используете memcache, вам также нужно очистить memcache. Поэтому нужно сделать что-то вроде:

echo 'flush_all' | nc yourhost 11211
php app/console cache:clear
php app/console doctrine:schema:update

попробуйте включить автоматическое отображение доктрины и удалите эту папку: YourBundle\Resources\config\doctrine


возможно, вы забыли включить автоматическое отображение доктрины;

orm:
        #auto_mapping: true

Если автоматическое сопоставление отключено (или прокомментировано , как указано выше), вы должны зарегистрировать Entiteis каждого пакета вручную.

orm:
       entity_managers:
                    default:
                        mappings:
                            AcmeHelloBundle: ~

Проверьте аннотацию перед объявлением класса. Есть ли @ORM\Entity ? В моей ситуации добавление этой строки помогает.