Doctrine orm Mysql的条令查询

Doctrine orm Mysql的条令查询,doctrine-orm,doctrine,doctrine-odm,doctrine-query,Doctrine Orm,Doctrine,Doctrine Odm,Doctrine Query,我想创建一个条令查询:(条令2.3) 我尝试了以下方法,但不起作用: $qry = $this->manager()->createQueryBuilder() ->from($this->entity, 'e') ->select('e'); $qry->where('e.plate like :plate'); $qry->setParameter('plate', $p

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

我尝试了以下方法,但不起作用:

$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)
((Plate) or (Plate)) AND ((Date) OR (Date))
案例1

但是为了获得好的输出,它应该如下所示

(Plate) AND ((Date) OR (Date))
案例2

在其他情况下,应该是这样的:

(Plate AND (Date)) OR Date)
((Plate) or (Plate)) AND ((Date) OR (Date))

有人能帮我吗?我不是教义专家,我是个学习者

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

$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); 
您也可以参考以下问题和解决方案,帮助我解决上述问题


当您执行代码时,您得到的错误是什么,或者您看到的是什么行为?由于查询输出“上面的输出”,我无法正确获取数据。您是否看到导致问题的(())黄铜,我不知道如何单独卸下板。。(图版)和((日期)或(日期))。@LuigiEdlCarno你能检查一下我更新的问题和我的评论吗。