Doctrine2, передать идентификатор или объект?

Я не понимаю, почему с некоторыми объектами Entity я могу установить идентификатор, а для других объектов я получаю сообщение об ошибке и говорит мне, что идентификатор не может быть нулевым, и вместо этого я должен передать объект.

например.:

$log = new Log();
$log->setTypeId(1);
$log->setUserId(1);
$entityManager->persist($log);
$entityManager->flush();

Если я попробую код выше, я получу сообщение об ошибке:Нарушение ограничения целостности :1048 Столбец "user _id" не может быть нулевым . И я должен сначала создать объект типа и объект пользователя и передать их:

$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());
    }

}
?>
6
задан PachinSV 10 July 2012 в 17:16
поделиться