Команда 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
? В моей ситуации добавление этой строки помогает.