Php 原则dql不返回MySQL返回的预期结果

Php 原则dql不返回MySQL返回的预期结果,php,mysql,doctrine-orm,dql,symfony-2.3,Php,Mysql,Doctrine Orm,Dql,Symfony 2.3,在最后一个小时左右,我试图让下面的MySQL查询在DQL中工作,但是它没有返回预期的结果,也没有输出任何内容 这是输出正确结果的MySQL查询 MySQL: SELECT vp.id FROM vehicle_photo AS vp INNER JOIN vehicle AS v ON vp.vehicle_id = v.id AND vp.manualMaintenanceCheckedOn IS NULL AND vp.type_id = 1 LEFT JOIN vehicle_mainte

在最后一个小时左右,我试图让下面的MySQL查询在DQL中工作,但是它没有返回预期的结果,也没有输出任何内容

这是输出正确结果的MySQL查询

MySQL:

SELECT vp.id FROM vehicle_photo AS vp
INNER JOIN vehicle AS v ON vp.vehicle_id = v.id AND vp.manualMaintenanceCheckedOn IS NULL AND vp.type_id = 1
LEFT JOIN vehicle_maintenance_history AS vmh ON vmh.vehicle_id = v.id AND vmh.source != 'kip' AND vmh.source != 'haan'
WHERE vmh.vehicle_id IS NULL
LIMIT 1;
DQL:

据我们所知,vmh.source出现了一些问题。当省略andWhere'vmh.source!=:haan'和andWhere'vmh.source!=:kip’DQL查询不输出结果。但是,这些过滤器需要处于活动状态,因为两者都需要过滤掉


我希望你们知道如何修复结果集。

我想你们的原始SQL与Doctrine生成的SQL有什么不同。我想试试这样的东西:

$qb=$this->getDoctrine->getEntityManager->createQueryBuilder; $qb->选择“副总裁id” ->来自“VaartlandIntranetBundle:VehiclePhoto”,“vp” ->内部连接“副总裁车辆”、“v” ->左连接 “v.车辆维护历史记录”, “vmh”, \条令\ORM\Query\Expr\Join::WITH, $qb->expr->andx $qb->expr->eq'vmh.vehicle'、'v.id', $qb->expr->neq'vmh.source',':kip', $qb->expr->neq'vmh.source',':haan' ->其中“vp.type=1” ->其中“vp.manualMaintenanceCheckedOn为空” ->其中“vmh.vehicle为空” ->设置参数'kip','kip' ->设置参数'haan','haan' ->setMaxResults1; $ers=$qb->getQuery; $res=$qb->getQuery->getResult; 如果haan和kip动态参数总是设置为kip和haan,我将跳过赋值并直接将它们写入表达式中

更多信息:


这就解决了问题。问题确实出在连接上。谢谢你的帮助!
    $qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder();
    $qb->select('vp.id')
        ->from('VaartlandIntranetBundle:VehiclePhoto', 'vp')
        ->innerJoin('vp.vehicle', 'v')
        ->leftJoin('v.vehicleMaintenanceHistory', 'vmh', \Doctrine\ORM\Query\Expr\Join::WITH, 'vmh.vehicle = v.id')
        ->where('vp.type = 1')
        ->andWhere('vp.manualMaintenanceCheckedOn is null')
        ->andWhere('vmh.source != :kip')
        ->andWhere('vmh.source != :haan')
        ->andWhere('vmh.vehicle IS NULL')
        ->setParameter('kip','kip')
        ->setParameter('haan','haan')
        ->setMaxResults(1);

    $ers = $qb->getQuery();
    $res = $qb->getQuery()->getResult();