这是我的实体类:
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)时发生异常(?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'与params [null,“test”,null,null,“test”,“test” ,“test”,“test”,“sdfa”,0,null,“asdf”,null,null,null,null]:
如何调试?
答案 0 :(得分:0)
添加类似的方法:
/**
* @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]
请尽量不要将lifecycleCallbacks命名为settes,这是不好的做法
答案 1 :(得分: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');
}