Laravel 如何将SQL查询转换为查询生成器?

Laravel 如何将SQL查询转换为查询生成器?,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,controlens是数据库中的一个表,entite、state是该表的字段 SELECT a.entite, a.etat, COUNT(a.etat) as nombre_toperform, b.nombre_performed,c.nombre_incompatible FROM `controlens` a LEFT JOIN ( SELECT entite,COUNT(etat) as nombre_performed from `controlens` WHERE etat l

controlens是数据库中的一个表,entite、state是该表的字段

SELECT a.entite, a.etat,  COUNT(a.etat) as nombre_toperform, b.nombre_performed,c.nombre_incompatible
FROM `controlens` a

LEFT JOIN ( SELECT entite,COUNT(etat) as nombre_performed from `controlens` WHERE etat like 'PERFORMED' GROUP BY entite, etat) b on a.entite = b.entite

LEFT JOIN ( SELECT entite,COUNT(etat) as nombre_incompatible from `controlens` WHERE etat like 'INCOMPATIBLE' GROUP BY entite, etat) c on a.entite = c.entite

WHERE a.etat like '%TOPERFORM%' 
GROUP BY a.entite, a.etat, b.nombre_performed,c.nombre_incompatible

您可能很少有办法实现这一点。以下是一个可能有效的想法(注意:尚未完全测试,因此可能需要一些调整):

或者,您可以尝试此软件包,看看它是否有助于解决问题:

除此之外,以下几篇有用的文章可能会为您指明正确的方向:


这是Stackoverflow的英文版本。请用英语发布您的问题。请帮助我将sql查询转换为查询生成器查询编辑您的问题,并向我们展示一些代码,说明您尝试在哪里执行此操作。我们不能为你做所有的,并且检查如何发布一个问题谢谢cfnerd我已经测试了你的答案,这对我是一个很好的帮助
$toPerform = '%TOPERFORM%';
$subQuery1 = 'SELECT entite,COUNT(etat) as nombre_performed from `controlens` WHERE etat like 'PERFORMED' GROUP BY entite, etat';
$subQuery2 = 'SELECT entite,COUNT(etat) as nombre_incompatible from `controlens` WHERE etat like 'INCOMPATIBLE' GROUP BY entite, etat';

DB::table('controlens as a')->select([
    'a.entite',
    'a.etat',
    DB::raw('COUNT(a.etat) AS nombre_toperform'),
    'b.nombre_performed',
    'c.nombre_incompatible'
])
->leftJoin(DB::raw("($subQuery1) as b"), 'a.entite', '=', 'b.entite')
->leftJoin(DB::raw("($subQuery2) as c"), 'a.entite', '=', 'c.entite')
->where('a.etat', $toPerform)
->groupBy('a.entite', 'a.etat', 'b.nombre_performed', 'c.nombre_incompatible');