Rumah > Soal Jawab > teks badan
Apabila saya menampal pertanyaan berikut ke dalam alat SQL saya, ia berfungsi dengan baik, tetapi mengembalikan sifar baris apabila dijalankan melalui Laravel.
$sql = " SELECT main_query.* FROM ( SELECT c.id, c.name, c.order, cd.case, (SELECT count(*) from logs cl where c.id = cl.id and cl.status = 'OPEN' ) as cl_count, sdsc.task FROM `table` c INNER JOIN `table2` cd ON (c.id = cd.id) LEFT JOIN `table3` sdsc ON (c.id = sdsc.id) WHERE c.status = 'NEW' GROUP BY c.id ORDER BY cd.updated_at DESC ) main_query where main_query.cl_count > 1 GROUP BY main_query.id ORDER BY main_query.updated_at DESC limit 0,20 ";
Disebabkan kerumitan pertanyaan sebenar, saya tidak dapat menukarnya kepada pertanyaan Eloquent, jadi saya menggunakan DB::select(DB::raw($searchQuery));
untuk melaksanakannya.
Jika saya mengalih keluar where main_query.cl_count > 1
pertanyaan berfungsi dengan baik. Apakah yang menyebabkannya gagal, dan bagaimana saya boleh menulis semula kod tersebut?
P粉5178143722024-01-17 11:29:37
Cuba kod berikut, yang dihasilkan oleh https://sql2builder.github.io/
DB::query()->fromSub(function ($query) { $query->from('table') ->select('table.id', 'table.name', 'table.order', 'table2.case', 'table3.task') ->on(function ($query) { $query->where('table.id','=','table2.id'); }) ->on(function ($query) { $query->where('table.id','=','table3.id'); }) ->where('table.status','=','NEW') ->groupBy('table.id') ->orderBy('','desc'); },'main_query') ->select('main_query.*') ->where('main_query.cl_count','>',1) ->groupBy('main_query.id') ->orderBy('','desc') ->get();