Menyelesaikan SQL_MODE=ONLY_FULL_GROUP_BY Konflik dalam Laravel Eloquent
Apabila menggunakan Eloquent untuk melaksanakan pertanyaan kumpulan, anda mungkin menghadapi ralat yang berkaitan dengan tetapan tidak serasi untuk sql_mode=only_full_group_by. Ralat ini boleh berlaku apabila lajur tidak teragregat disertakan dalam senarai PILIH yang bukan sebahagian daripada klausa GROUP BY.
Untuk menyelesaikan isu ini, anda boleh melumpuhkan mod MySQL yang ketat dengan menetapkan perkara berikut dalam pangkalan data anda fail konfigurasi:
'connections' => [ 'mysql' => [ 'strict' => false, ] ]
Dengan menetapkan 'ketat' kepada palsu, anda membenarkan MySQL berkelakuan seolah-olah ia berjalan dalam mod MySQL 5.6, yang tidak menguatkuasakan peraturan pengelompokan ketat yang dikenakan oleh sql_mode=only_full_group_by.
Sebagai alternatif, anda boleh mengubah suai pertanyaan Eloquent anda untuk memastikan semua lajur dalam senarai PILIH sama ada diagregatkan atau disertakan dalam klausa GROUP BY. Sebagai contoh, anda boleh menggunakan kaedah 'mentah' untuk menambah pengagregatan yang diperlukan:
$products = Product::where('status', 1) ->where('stock', '>', 0) ->where('category_id', '=', $category_id) ->groupBy('store_id') ->orderBy('updated_at', 'desc') ->selectRaw('*, COUNT(*) AS total_products') ->take(4) ->get();
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan SQL_MODE=ONLY_FULL_GROUP_BY Konflik dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!