2012-01-29 2 views
1

を持続に呼び出されていないことのようです:ライフサイクルコールバックエンティティクラス内部

コマンドの教義と、データベースのデータを更新
/** @Entity @HasLifecycleCallbacks */ 
class Job { 

    /** @PrePersist */  
    public function setCreatedAtOnCreate() 
    { 
     //some code 
    } 

    /** @PrePersist */ 
    public function setExpiresAtOnCreate() 
    { 
     //some code 
    } 

:備品:負荷は私にエラーを与える:

Column created_at cannot be null.

誰かが助けてもらえますか?私は何が欠けているのですか?

答えて

4

コールバック関数を定義したら、対応するエンティティのyamlファイル内のlifecycleCallbacks:のパラメータとしてこれらの2つの関数を指定する必要があります。 XMLを使用している場合は、そこに指定します。 yamlを使用したライフサイクルコールバックの動作例を以下に示します。このエンティティにcorrespodingあなたのYAMLファイルで

class myentity{ 

private $createdAt ; 
private $updatedAt ; 
public function setCreatedAtValue() 
    { 
     $this->createdAt = new \DateTime(); 
    } 

    public function setUpdatedAtValue() 
    { 
     $this->updatedAt = new \DateTime(); 
    } 
} 

、あなたは

Myproject\MytBundle\Entity\myentity: 
    type: entity 
    table: myentity 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
     strategy: IDENTITY 
    lifecycleCallbacks: 
    prePersist: [ setCreatedAtValue,setUpdatedAtValue ] 
    preUpdate: [ setUpdatedAtValue ] 

このコールバックの前に呼び出しますDBとsetUpdatedAtValue機能にデータを挿入する前に呼び出します、ライフサイクルコールバックで、この2つの機能を呼び出す必要がありますDbの値を更新する

これがうまくいけばうまくいきます。 ハッピーコーディング。

+0

私は同じ問題を抱えています。http://stackoverflow.com/questions/17992549/symfony2-orm-prepersist-not-workingご提案いただけますか? – neeraj

+0

こんにちはNeeraj @ yamlファイルの意図で非常に重要なので、私はdefenitlyこれはur probsだと思います –

+0

だから私はエンティティファイルには紛失していますか?あなたは私が上記の投稿を見ましたか? – neeraj