我有一個實體之間共享代碼的Trait文件。Symfony2命令「doctrine:schema:update」未檢測到實體中使用的特徵文件更改
特徵文件例如:
<?php
namespace Acme\CmsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* BaseHtml Trait
*
*/
trait BaseHtml
{
/**
* @var integer
*
* @ORM\Column(name="status", type="string", length=20)
*/
private $status;
/**
* @var \DateTime
*
* @ORM\Column(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;
}
}
實體文件,例如:
<?php
namespace Acme\CmsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Page
*
* @ORM\Table()
* @ORM\Entity
*
*
*/
class Page
{
use BaseHtml;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Gallery")
*/
private $gallery;
public function getId()
{
return $this->id;
}
public function setGallery(\Application\Sonata\MediaBundle\Entity\Gallery $gallery)
{
$this->gallery = $gallery;
return $this;
}
public function getGallery()
{
return $this->gallery;
}
}
但是,當我修改特性文件的註釋或添加新列,執行「PHP應用程序/控制檯學說:架構:更新「:
Nothing to update - your database is already in sync with the current entity metadata.
我需要手動更改所有使用特徵f的實體文件的日期修改ile獲得教條:schema:更新正常運行。
我試着用命令
php app/console doctrine:cache:clear-metadata
php app/console cache:clear
之前執行學說:架構:更新,但是沒有結果。
任何想法不要手動更新實體文件和原則:架構:更新檢測更新特性文件時實體的更新,我失去了與特性共享代碼的優點的一部分。
也許你忘了包含'trait'命名空間/類? –
感謝您的回覆。特質文件和實體文件位於相同的命名空間中(對不起,當我複製源錯過特徵文件的第一行時)。我在不同的命名空間中測試過放置文件,但在嘗試更新時測試了相同的結果:模式 – Ravz