2014-05-22 104 views
-1

過期這是我的實體類:讓空值在日期

namespace Bits\JobBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Bits\JobBundle\Utils\Jobeet as Jobeet; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* Job 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Bits\JobBundle\Entity\JobRepository") 
* @ORM\HasLifecycleCallbacks() 
*/ 


class Job 
{ 

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

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

    /** 
    * @var \DateTime 
    */ 
    private $updated_at; 

    /** 
    * @var \Bits\JobBundle\Entity\Category 
    */ 
    private $category; 

    /** 
    * Set expires_at 
    * @ORM\PrePersist 
    * @param \DateTime $expires_at 
    * @return Job 
    */ 
    public function setExpiresAt() 
    { 
     $this->expires_at=new \DateTime(); 

     return $this; 
    } 

    /** 
    * Get expires_at 
    * 
    * @return \DateTime 
    */ 
    public function getExpiresAt() 
    { 
     return $this->expires_at; 
    } 

Job.orm.yml

Bits\JobBundle\Entity\Job: 
    type: entity 
    table: job 
    id: 
     id: 
      type: integer 
      generator: {strategy: auto} 
    fields: 
     type: 
      type: string 
      length: 255 
      nullable: true 
     expires_at: 
      type: datetime 
     created_at: 
      type: datetime 
     updated_at: 
      type: datetime 
      nullable: true 
    manyToOne: 
     category: 
      targetEntity: Category 
      inversedBy: jobs 
      joinColumn: 
       name: category_id 
       referencedColumnName: id 
    lifeCycleCallbacks: 
     prePersist: [setCreatedAt, setExpiresAt] 
     preUpdate: [setUpdatedAt] 

我得到的expires_at值空值。

這是SQL錯誤。

執行'INSERT INTO作業(類型,公司,徽標,網址,位置,位置,說明,how_to_apply,令牌,is_public,is_activated,email,expires_at,created_at,updated_at,category_id)時發生異常VALUES(?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?)',參數爲[null,「test」,null,null,「test」,「test 「,」test「,」test「,」sdfa「,0,null,」asdf「,null,null,null,null]:

如何調試?

+0

您能否提供更多詳細信息?你如何填補工作實體? – griotteau

+0

問題不在於填寫表單。過期的價值將自動生成。但是,在我的情況下,它並沒有產生。當我在setExpiresAt函數上回顯某些內容時,插入操作時不會調用此函數。這意味着我得到了上面的SQL語句 –

+0

@SudinManandhar發佈你正在使用的代碼來堅持實體 – Broncha

回答

0

add方法類似:

/** 
* @ORM\PrePersist 
*/ 
public function setExpiresAtCreate() 
{ 
    if ($this->expires_at === null) 
     $this->expires_at = new \DateTime('2222-12-22'); 
} 

,並更改lifecycleCallbacks這樣的:

lifeCycleCallbacks: 
     prePersist: [setCreatedAtCreate, setExpiresAtCreate] 
     preUpdate: [setUpdatedAtUpdate] 

請儘量不要名字命名爲喜歡settes lifecycleCallbacks,這是不好的做法

0

添加到PrePersist()

/** 
* @ORM\PrePersist() 
*/ 
public function setExpiresAtCreate() 
{ 
    if ($this->expires_at === null) 
     $this->expires_at = new \DateTime('2222-12-22'); 
} 

public function __construct() 
{ 
    $this->expires_at = new \DateTime('2222-12-22'); 
}