一部のエンティティオブジェクトでIDを設定でき、他のオブジェクトではエラーが発生し、IDをnullにできないため、代わりにオブジェクトを渡す必要がある理由を理解していません。
例えば:
$log = new Log();
$log->setTypeId(1);
$log->setUserId(1);
$entityManager->persist($log);
$entityManager->flush();
上記のコードを試してみると、次のようなエラーが発生します。整合性制約違反:1048列'user_id'をnullにすることはできません。そして、最初にTypeObjectオブジェクトとdeUserオブジェクトを作成し、それらを渡す必要があります。
$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());
}
}
?>