Доктрина выберите дату запроса sqlite

Я хочу запросить поле даты db через объект php datetime с привязкой к доктрине. Я не получаю результатов по типу поля date db. Он работает с типом поля datetime db. На mysql и postgres он работает.

Вместо этого на Sqlite я получаю это странное поведение. Проблема кажется связана с равным сравнением только в поле даты.

Где я не прав?

Это мой класс сущности:

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * App\Entity\Customer
 *
 * @ORM\Entity()
 * @ORM\Table(name = "Customer")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name = "discr", type = "string")
 * @ORM\DiscriminatorMap({"base":"BaseCustomer" "extended":"Customer"})
 */
class BaseCustomer
{
    /**
     * @ORM\Id
     * @ORM\Column(type = "integer")
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type = "date")
     */
    protected $dateofbirth;

    /**
     * @ORM\Column(type = "datetime", nullable=true)
     */
    protected $lastlogin;

В контроллере:

    $datestrchk = "1980-02-05";

    $datedtchk = \DateTime::createFromFormat("Y-m-d H:i:s", $datestrchk . " 00:00:00");
    $qb = $this->get("doctrine")->getManager()->createQueryBuilder()
            ->select(array("Customer"))
            ->from("App:Customer", "Customer")
            ->where("Customer.dateofbirth = :data")
            ->setParameter("data", $datedtchk);
    $ret = $qb->getQuery()->getResult();
    echo count($ret); // NOT FOUND

    $datedtchk = \DateTime::createFromFormat("Y-m-d", $datestrchk);
    $qb = $this->get("doctrine")->getManager()->createQueryBuilder()
            ->select(array("Customer"))
            ->from("App:Customer", "Customer")
            ->where("Customer.dateofbirth = :data")
            ->setParameter("data", $datedtchk);
    $ret = $qb->getQuery()->getResult();
    echo count($ret); // NOT FOUND

    $qb = $this->get("doctrine")->getManager()->createQueryBuilder()
            ->select(array("Customer"))
            ->from("App:Customer", "Customer")
            ->where("Customer.dateofbirth = :data")
            ->setParameter("data", $datestrchk);
    $ret = $qb->getQuery()->getResult();
    echo count($ret); // OK

    $date1start = \DateTime::createFromFormat("Y-m-d H:i:s", "1980-02-04 23:59:59");
    $date1end = \DateTime::createFromFormat("Y-m-d H:i:s", "1980-02-05 00:00:00");

    $qb = $this->get("doctrine")->getManager()->createQueryBuilder()
            ->select(array("Customer"))
            ->from("App:Customer", "Customer")
            ->where("Customer.dateofbirth >= :data1start AND Customer.dateofbirth <= :data1end")
            ->setParameter("data1start", $date1start)
            ->setParameter("data1end", $date1end);
    $ret = $qb->getQuery()->getResult();
    echo count($ret); // OK

    $date2start = \DateTime::createFromFormat("Y-m-d H:i:s", "1980-02-05 00:00:00");
    $date2end = \DateTime::createFromFormat("Y-m-d H:i:s", "1980-02-05 00:00:01");

    $qb = $this->get("doctrine")->getManager()->createQueryBuilder()
            ->select(array("Customer"))
            ->from("App:Customer", "Customer")
            ->where("Customer.dateofbirth >= :data2start AND Customer.dateofbirth <= :data2end")
            ->setParameter("data2start", $date2start)
            ->setParameter("data2end", $date2end);
    $ret = $qb->getQuery()->getResult();
    echo count($ret); // NOT FOUND

Кодовое обозначение: https://github.com/ComuneFI/BiCoreBundle. (Клиент-> Клиент)

Symfony 3.4.18

Sqlite db версии 3.22

Php 7.2.12 в Ubuntu 18.04

Как ваши строки даты отформатированы в базе данных? Как date1start и т. д. Выглядят после преобразования в строку? Это другой формат?

Shawn 13.11.2018 15:07

Sqlite create: CREATE TABLE Customer (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, dateofbirth DATE NOT NULL, lastlogin DATETIME DEFAULT NULL);

Manzolo 13.11.2018 15:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
570
1

Ответы 1

Та же проблема. Попробуйте ->setParameter("data2start", $date2start->format('Ymd H:i:s'))

Я пытаюсь создать "фреймворк" с несколькими базами данных с доктриной, и мне нужно, чтобы параметр был точно datetime

Manzolo 26.04.2019 01:48

Другие вопросы по теме