Tôi không understad tại sao với một số đối tượng Entity tôi có thể đặt Id và cho những đối tượng khác tôi gặp lỗi và nói rằng Id không thể rỗng và tôi phải chuyển đối tượng thay thế.Doctrine2, chuyển Id hoặc Đối tượng?
ví dụ .:
$log = new Log();
$log->setTypeId(1);
$log->setUserId(1);
$entityManager->persist($log);
$entityManager->flush();
Nếu tôi thử các mã trên tôi nhận được lỗi nói rằng: Liêm hạn chế vi phạm: 1048 Cột 'user_id' không thể được null. Và trước tiên tôi phải tạo đối tượng Loại và đối tượng Người dùng và vượt qua chúng:
$log->setType($TypeObject)
$log->setUser($UserObject)
Nhưng đối với các đối tượng thực thể khác, tôi không có vấn đề khi gán giá trị trực tiếp, tại sao?
Đây là Entity Log của tôi:
<?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());
}
}
?>
vui vì điều đó đã giúp ích. Điều này dẫn tôi vào mốc 1K. woohoo. –