2016-10-05 103 views
2

我試圖讓涉及像created_at普通領域和updated_at值我的實體的抽象類:教義實體抽象類

<?php 
namespace AppBundle; 

use Doctrine\ORM; 

abstract class Model { 

    /** 
    * @var \DateTime $created_at 
    * 
    * @ORM\Column(type="datetime") 
    */ 
    private $created_at; 

    /** 
    * @var \DateTime $updated_at 
    * 
    * @ORM\Column(type="datetime") 
    */ 
    private $updated_at; 

} 

然後,我致以類:

<?php 
namespace AppBundle\Entity; 

use AppBundle\Model; 

/** 
* Entity 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="RB\ProductsBundle\Entity\ProductRepository") 
*/ 
class Entity extends Model 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255, nullable=true) 
    */ 
    private $name; 
} 

問題是:當我製作php app/console doctrine:schema:update --dump-sql時,它無法識別模型字段。我該如何改變它?我應該使用一個特質或類似的東西?

編輯:我想在我的抽象類的頂部,沒有運氣

感謝您的時間:)

回答

6

的問題可能是,在你的屬性添加* @ORM\MappedSuperclass抽象父類定義爲private。將它們更改爲protected,它應該可以工作。另外,我使用traits來達到這個目的,而不是繼承,因爲你的實體類可以使用多重特性,但它們只能擴展一個抽象類。

+0

就是這樣!謝謝:) – Hammerbot

+0

完美提示的特質 - 我不會在這裏推薦擴展。 – LBA

+0

我也認爲這個特質可以是更好的選擇。但是,我正在嘗試爲基本功能創建抽象類,如序列化參數,時間戳函數等。從Laravel環境中可以瞭解到。 – Hammerbot