我正在尝试将此SQL查询转换为Laravel中的Eloquent。在laravel中,我激活了严格模式,因为我需要这种方式。
将SQL代码转换为雄辩
SELECT
count(*) as total, ww.wtipoproducto_id, sum(ww.score) score,
count(*)/(select count(*) from producto_words where producto_id = pw.producto_id and activo = 1) coincidencia
FROM
wtipoproducto_words as ww
INNER JOIN producto_words as pw on ww.word_id = pw.word_id
WHERE
ww.wtipoproducto_id in (select wtipoproducto_id from wtipoproducto_producto where producto_id = pw.producto_id) and
wtipoproducto_id = 3125 and pw.producto_id = 36 and pw.activo = 1
GROUP BY
ww.wtipoproducto_id;
在严格模式下不起作用
$query = DB::table('wtipoproducto_words as ww')
->select(DB::raw('count(*) as total, ww.wtipoproducto_id, sum(ww.score) as score, count(*)/(select count(*) from producto_words where producto_id = pw.producto_id and activo = 1) as coincidencia'))
->join('producto_words as pw', 'ww.word_id', '=', 'pw.word_id')
->whereIn('ww.wtipoproducto_id', function($query){
$query->select('wtipoproducto_id')->from('wtipoproducto_producto')->where('producto_id', '=', 'pw.producto_id');
})
->where('wtipoproducto_id', '=', 3125)
->where('pw.producto_id', '=', 36)
->where('pw.activo', '=', 1)
->groupBy('ww.wtipoproducto_id')
->get();