2013-03-04 114 views
0

我剛開始使用symfony和doctrine。我有一個簡單的實體,它有一個屬性不與數據庫綁定。這個屬性應該包含xml文件的內容(我想要製作xml文件,當doctrine向數據庫添加行時)。教義屬性映射

/** 
* Layouts 
* 
* @ORM\Table(name="layouts") 
* @ORM\Entity 
* @ORM\HasLifecycleCallbacks() 
*/ 
class Layouts 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="SEQUENCE") 
    * @ORM\SequenceGenerator(sequenceName="layouts_id_seq", allocationSize=1, initialValue=1) 
    */ 
    private $id; 

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

    /** 
    * ??????? 
    */ 
    private $template_body; 
    ... 
} 

如何描述$template_body屬性?在不離開屬性描述的情況下,我遇到了一個問題 - 當我在表單中編輯此屬性時,該原則不會導致preUpdate方法。

回答

2

您可以這樣做,我只需在您的類中標記PreUpdate方法,然後開始處理您的$ template_body變量。

請更改

* @ORM\HasLifecycleCallbacks() 

* @ORM\HasLifecycleCallbacks 

,創造像這樣的功能..

/** 
* @PreUpdate 
*/ 
public function myUpdateFunction() 
{ 
    // Do stuff 
} 
+0

如果我在我的管理形式@PreUpdate方法僅編輯$ template_body值不叫。 但如果我編輯別的東西 - PreUpdate方法工作正常。我認爲映射問題。 – 2013-03-04 10:38:11

+0

$ template_body不是ORM列集的一部分,因此僅在受管實體上編輯此值不會觸發PreUpdate事件。我認爲你需要問的問題是,一旦創建了它,你實際上將如何處理$ template_body,它是否會與該實體的其他屬性保持一致?如果是這樣,它不應該也是一個專欄? – 2013-03-04 11:48:01

+0

「$ template_body不是ORM列集合的一部分,因此只需在託管實體上編輯此值就不會觸發PreUpdate事件。我認爲您需要問的問題是」 - 謝謝,您是對的! 我想從$ template_body屬性創建我的磁盤上的文件,我做到了觸發PreUpdate事件。但是,如果我編輯管理實體只是這個值不會觸發PreUpdate事件。這是我的問題。英文我的第二個問題,我很抱歉(( – 2013-03-04 13:46:51