"Laravel Eloquent DB::Pertanyaan mentah tidak menyokong penggunaan pernyataan WHERE dan subquery pada masa yang sama"
P粉191610580
P粉191610580 2024-01-16 13:01:17
0
1
525

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粉191610580
P粉191610580

membalas semua(1)
P粉517814372

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();
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan