Rumah > Artikel > pangkalan data > Bagaimana untuk Membetulkan \'Ungkapan #1 Senarai PILIH Laravel Eloquent Bukan dalam GROUP BY\' Ralat MySQL?
Menyelesaikan "Ungkapan #1 Senarai SELECT MySQL Bukan dalam GROUP BY" Ralat dalam Laravel Eloquent
Dalam Laravel Eloquent, ralat biasa ditemui ialah ralat "Ungkapan #1 Senarai SELECT tiada dalam klausa GROUP BY" apabila menggunakan kaedah groupBy(). Ini biasanya berlaku apabila lajur tidak teragregat disertakan dalam senarai SELECT semasa pengagregatan dilakukan pada lajur lain.
Pertimbangkan pertanyaan Laravel Eloquent berikut:
$products = Product::where('status', 1) ->where('stock', '>', 0) ->where('category_id', '=', $category_id) ->groupBy('store_id') ->orderBy('updated_at', 'desc') ->take(4) ->get();
Melaksanakan pertanyaan ini mungkin mengakibatkan ralat berikut:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'myshop.products.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select * from products where status = 1 and stock > 0 and category_id = 5 group by store_id order by updated_at desc limit 4)
Untuk menyelesaikan isu ini, lumpuhkan mod ketat MySQL dalam tetapan sambungan pangkalan data. Mod ini menguatkuasakan sintaks SQL dan kumpulan lajur yang lebih ketat, yang boleh bercanggah dengan pertanyaan yang sedang dilaksanakan.
Ubah suai konfigurasi pangkalan data dalam fail config/database.php:
'connections' => [ 'mysql' => [ // Behave like MySQL 5.6 'strict' => false, // Behave like MySQL 5.7 'strict' => true, ] ]
Tetapkan ketat pilihan untuk palsu untuk melumpuhkan mod ketat dalam sambungan MySQL. Ini sepatutnya menyelesaikan ralat "Ungkapan #1 Senarai PILIH Bukan dalam KUMPULAN OLEH".
Untuk tetapan konfigurasi lanjutan, rujuk catatan blog oleh Matt Stauffer.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Ungkapan #1 Senarai PILIH Laravel Eloquent Bukan dalam GROUP BY\' Ralat MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!