Laravel конвертировать запрос SQL в красноречивый не работает - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь преобразовать этот SQL-запрос в Eloquent в Laravel.В laravel у меня активирован строгий режим, так как он мне нужен таким образом.

Преобразование кода SQL в Eloquent

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...