Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 原则选择查询日期sqlite_Php_Symfony_Doctrine Orm_Sqlite - Fatal编程技术网

Php 原则选择查询日期sqlite

Php 原则选择查询日期sqlite,php,symfony,doctrine-orm,sqlite,Php,Symfony,Doctrine Orm,Sqlite,我想通过带有条令绑定的php datetime对象查询db日期字段。我没有得到日期数据库字段类型的结果。它适用于datetime db字段类型。 在mysql和postgres上它可以工作 在Sqlite上,我得到了这种奇怪的行为。这个问题似乎与“仅在日期上进行相等比较”字段有关 我错在哪里 这是我的实体类: use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * App\

我想通过带有条令绑定的php datetime对象查询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
$datestrchk=“1980-02-05”;
$datedtchk=\DateTime::createFromFormat(“Y-m-dh:i:s,$datestrchk.”00:00:00”);
$qb=$this->get(“条令”)->getManager()->createQueryBuilder()
->选择(阵列(“客户”))
->发件人(“应用程序:客户”、“客户”)
->其中(“Customer.dateofbirth=:data”)
->setParameter(“数据”,$datedtchk);
$ret=$qb->getQuery()->getResult();
回声计数($ret);//找不到
$datedtchk=\DateTime::createFromFormat(“Y-m-d”,$datestrchk);
$qb=$this->get(“条令”)->getManager()->createQueryBuilder()
->选择(阵列(“客户”))
->发件人(“应用程序:客户”、“客户”)
->其中(“Customer.dateofbirth=:data”)
->setParameter(“数据”,$datedtchk);
$ret=$qb->getQuery()->getResult();
回声计数($ret);//找不到
$qb=$this->get(“条令”)->getManager()->createQueryBuilder()
->选择(阵列(“客户”))
->发件人(“应用程序:客户”、“客户”)
->其中(“Customer.dateofbirth=:data”)
->setParameter(“数据”,$datestrchk);
$ret=$qb->getQuery()->getResult();
回声计数($ret);//好啊
$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(“条令”)->getManager()->createQueryBuilder()
->选择(阵列(“客户”))
->发件人(“应用程序:客户”、“客户”)

->其中(“Customer.dateofbirth>=:data1start和Customer.dateofbirth=:data2start和Customer.dateofbirth同一问题。请尝试
->设置参数(“data2start”,$date2start->格式('Ymd H:i:s'))

您的日期字符串在数据库中是如何格式化的?当字符串化时,date1start等是什么样子的?它是不同的格式吗?Sqlite创建:创建表Customer(id INTEGER主键自动递增不为NULL,dateofbirth date不为NULL,lastlogin DATETIME默认为NULL);我正在尝试构建一个“多数据库”框架“使用条令,我需要参数精确为datetime