Nie rozumiem, dlaczego z niektórymi obiektami obiektu mogę ustawić identyfikator, a dla innych obiektów pojawia się błąd i mówi mi, że identyfikator nie może być pusty i zamiast tego muszę przekazać obiekt.Doctrine2, przekazać identyfikator lub obiekt?
np .:
$log = new Log();
$log->setTypeId(1);
$log->setUserId(1);
$entityManager->persist($log);
$entityManager->flush();
Gdy próbuję powyższy kod otrzymuję błąd, który mówi: naruszenie więzów integralności: 1048 kolumna 'user_id' nie może być null. I muszę najpierw utworzyć obiekt tekstowy i De obiekt użytkownika, a ich pass:
$log->setType($TypeObject)
$log->setUser($UserObject)
Ale dla innych obiektów jednostki nie mam problemu z przypisaniem wartości bezpośrednio, to dlaczego?
To mój Podmiot Log:
<?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());
}
}
?>
Cieszę się, że pomogło. To dało mi znak 1K. woohoo. –