Как в doctrine2 присвоить полю null?

Сегодня столкнулся с тем что doctrine не сохраняет поля, которым присвоен null

Например
..
$object->setLockedBy(null);
$object->setLockedAt(null);
..
$em->persist($object);
$em->flush();

В итоге значение указанных полей не меняется. getter и setter стандартные, сгенерированные symfony2
  • Вопрос задан
  • 2845 просмотров
Пригласить эксперта
Ответы на вопрос 2
hell0w0rd
@hell0w0rd
Просто разработчик
У меня все работает.
Покажите весь код, откуда берете объект, какой конфиг у сущности
Ответ написан
@tsifra Автор вопроса
<?php

namespace Backend\WorkorderBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;

use Doctrine\ORM\Mapping as ORM;

/**
 * Workorder
 *
 * @ORM\Table(name="workorder")
 * @ORM\Entity(repositoryClass="Backend\WorkorderBundle\Entity\WorkorderRepository")
 */
class Workorder
{
//..
    /**
     * @var integer
     *
     * @ORM\Column(name="locked_by", type="integer", nullable=true)
     */
    private $lockedBy;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="locked_at", type="datetime", nullable=true)
     */
    private $lockedAt;
//..
    public function __construct()
    {
        //здесь про эти два объекта ничего
    }
//..
    /**
     * Set lockedBy
     *
     * @param integer $lockedBy
     * @return Workorder
     */
    public function setLockedBy($lockedBy)
    {
        $this->lockedBy = $lockedBy;
    
        return $this;
    }

    /**
     * Get lockedBy
     *
     * @return integer 
     */
    public function getLockedBy()
    {
        return $this->lockedBy;
    }
//..


если вместо null в этом коде ставить какие-то другие значения то БД без проблем обновляется.

$object->setLockedBy(null);
$object->setLockedAt(null);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы