Laravel将查询SQL转换为雄辩的不起作用

时间:2019-01-16 15:04:27

标签: sql laravel eloquent

我正在尝试将此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();

0 个答案:

没有答案