Задать вопрос
@Kripto77

Как в сущности Symfony 4.3 (тип поля datetime) вместо default_value отдавать NULL?

База MySQL/MariaDB, поле datetime c default value = "0000-00-00 00:00:00". По рекомендациям NULL не ставится, т.к. с default_value быстрее скорость выборки из базы.

//src/Entity/Customer.php

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="last_bill_date", type="datetime", nullable=false, options={"default"="0000-00-00 00:00:00"})
     */
    private $lastBillDate;

    /**
     * @return \DateTime
     */
    public function getLastBillDate(): \DateTime
    {
        return $this->lastBillDate;
    }


В случае default_value возвращает объект DateTime('0000-00-00 00:00:00') с учетом часового пояса. Дальше естественно возникают проблемы, например в Twig дата вида -0001-11-30 00:00:00

Сделал такое решение, т.к. при type="datetime" в getLastBillDate() приходит уже готовый DateTime:

//src/Entity/Customer.php

    /**
     * @ORM\Column(name="last_bill_date", type="string")
     */
    private $lastBillDate;

    /**
     * @return null|\DateTime
     */
    public function getLastBillDate(): ?\DateTime
    {
        $result = $this->lastBillDate !== '0000-00-00 00:00:00' ? new \DateTime($this->lastBillDate) : NULL;

        return $result;
    }


Подскажите как сделать правильно
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы