gpt4 book ai didi

doctrine-orm - 来自 Mysql 的 Doctrine 查询

转载 作者:行者123 更新时间:2023-12-04 04:50:29 26 4
gpt4 key购买 nike

我想创建一个 Doctrine 查询:(Doctrine 2.3)

SELECT * FROM `car` WHERE `plate` like '%' AND (`datetime` BETWEEN '2013-03-13 22:20:18' AND '2013-03-13 22:20:20') OR (`datetime` BETWEEN '2013-03-13 15:10:18' AND '2013-03-13 15:10:16')

我尝试了以下但它不工作:
$qry = $this->manager()->createQueryBuilder()
->from($this->entity, 'e')
->select('e');
$qry->where('e.plate like :plate');
$qry->setParameter('plate', $plate);
$qry->andWhere(
qry->expr()->between(
'e.datetime',
':dateFrom',
':dateTo'
)
)
->setParameter('dateFrom', $fromdate)
->setParameter('dateTo', $todate);
$qry->orWhere(
$qry->expr()->between(
'e.datetime',
':dateFrom',
':dateTo'
)
)
->setParameter('dateFrom1', $fromdate1)
->setParameter('dateTo1', $todate1);

上述查询的输出:
SELECT e FROM user e WHERE (e.plate like :plate AND (e.datetime BETWEEN :dateFrom AND :dateTo)) OR (e.datetime BETWEEN :dateFrom AND :dateTo)

我想检查同一列中的两个日期如何检查?语法正确吗?
目前是这样的:
(Plate AND (Date)) OR Date)

案例1

但它应该如下所示以获得良好的输出。
(Plate) AND ((Date) OR (Date))

案例2

在其他情况下,它应该是这样的:
((Plate) or (Plate)) AND ((Date) OR (Date))

有人可以帮助我吗我不是 Doctrine 专家我是一名学习者!

最佳答案

经过许多人的一些搜索和建议,我终于找到了一些逻辑并理解了Doctrine中的表达。下面我用一个例子给出了所有的表达。要测试的代码。

$ex1    =   $qry->expr()->like('e.user', "'".$user."'");
$ex2 = $qry->expr()->orX(
$qry->expr()->between('e.datetime', "'".$datetimefrom."'", "'".$datetimeto."'")
);
$ex3 = $qry->expr()->in('e.country', $country);
$final_expression = $qry->expr()->andX($ex1,$ex2,$ex3);

您还可以引用以下问题和解决方案,它们帮助我解决了上述问题。

REF Multiple Query in Doctrine with NAND,NOR,NOT,AND Operators

关于doctrine-orm - 来自 Mysql 的 Doctrine 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16979669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com