我不小心为什么有些实体对象可以设置ID和其他对象我得到一个错误,并说我的ID不能为空,我必须传递一个对象。Doctrine2,通过Id或Object?
例如为:
$log = new Log();
$log->setTypeId(1);
$log->setUserId(1);
$entityManager->persist($log);
$entityManager->flush();
如果我尝试上面的代码,我得到的错误,说:完整性约束违规:1048列“user_ID的”不能为空。我必须先创建类型对象和DE用户对象和通过他们:
$log->setType($TypeObject)
$log->setUser($UserObject)
但是对于其他的实体对象我没有问题,直接分配值,这是为什么?
这是我的实体日志:
<?php
/**
* @Entity
* @Table(name="log")
* @HasLifecycleCallbacks
*/
class Log
{
/**
* @var type
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
protected $id;
/**
*
* @var type
* @Column(type="integer")
*/
protected $user_id;
/**
*
* @var type
* @Column(type="integer")
*/
protected $type_id;
/**
*
* @var type
* @Column(type="datetime")
*/
protected $created;
/**
*
* @var type
* @ManyToOne(targetEntity="User", inversedBy="logs")
*/
protected $user;
/**
*
* @ManyToOne(targetEntity="Type", inversedBy="logs")
*/
protected $type;
public function getId()
{
return $this->id;
}
public function getUserId()
{
return $this->user_id;
}
public function getTypeId()
{
return $this->type_id;
}
public function getCreated()
{
return $this->created;
}
public function setUserId($userId)
{
$this->user_id = $userId;
}
public function setTypeId($typeId)
{
$this->type_id = $typeId;
}
public function setCreated($created)
{
$this->created = $created;
}
public function setUser($user)
{
$this->user = $user;
}
public function setType($type)
{
$this->type = $type;
}
/**
* @PrePersist
*/
public function prePersist()
{
$this->setCreated(new DateTime());
}
}
?>
很高兴帮助。这让我进入了1K大关。哇噢。 – 2012-08-01 19:36:53