Php 原则dql不返回MySQL返回的预期结果
在最后一个小时左右,我试图让下面的MySQL查询在DQL中工作,但是它没有返回预期的结果,也没有输出任何内容 这是输出正确结果的MySQL查询 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
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();