Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan `sql_mode=only_full_group_by` Konflik dalam Pertanyaan Fasih Laravel?

Bagaimana untuk Menyelesaikan `sql_mode=only_full_group_by` Konflik dalam Pertanyaan Fasih Laravel?

Susan Sarandon
Lepaskan: 2024-11-19 10:12:02
asal
941 orang telah melayarinya

How to Resolve `sql_mode=only_full_group_by` Conflicts in Laravel Eloquent Queries?

Penyelesaian Masalah Tidak serasi dengan sql_mode=only_full_group_by dalam Laravel Eloquent

Apabila melaksanakan Laravel Eloquent, ralat berkaitan dengan kemungkinan pertanyaan sql_mode=hanya_kumpulan_penuh_oleh. Ralat ini berlaku apabila pertanyaan mengandungi lajur tidak teragregat dalam klausa GROUP BY.

Punca:

Ralat disebabkan oleh mod MySQL yang ketat yang memerlukan semua lajur dalam senarai PILIH sama ada dikumpulkan atau diagregatkan dalam klausa GROUP BY. Dalam pertanyaan Eloquent yang disediakan, lajur id disertakan dalam senarai PILIH tetapi tidak disertakan dalam klausa KUMPULAN OLEH.

Penyelesaian:

Penyelesaian pilihan adalah dengan lumpuhkan mod MySQL yang ketat dalam tetapan sambungan pangkalan data. Ini boleh dilakukan dengan menambahkan perkara berikut pada fail config/database.php anda:

'mysql' => [
    'strict' => false,
],
Salin selepas log masuk

Penyelesaian Alternatif:

Jika melumpuhkan mod ketat bukan pilihan , anda boleh mengubah suai pertanyaan untuk memastikan semua lajur dalam senarai SELECT sama ada dikumpulkan atau diagregatkan. Dalam kes pertanyaan contoh, ini boleh dicapai dengan menambahkan Product::raw('COUNT(*) as product_count') pada klausa SELECT dan pengumpulan mengikut store_id dan id:

$products = Product::where('status', 1)
    ->where('stock', '>', 0)
    ->where('category_id', '=', $category_id)
    ->groupBy(['store_id', Product::raw('id')])
    ->orderBy('updated_at', 'desc')
    ->take(4)
    ->get();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan `sql_mode=only_full_group_by` Konflik dalam Pertanyaan Fasih Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan