Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan SQL_MODE=ONLY_FULL_GROUP_BY Konflik dalam Laravel Eloquent?

Bagaimana untuk Menyelesaikan SQL_MODE=ONLY_FULL_GROUP_BY Konflik dalam Laravel Eloquent?

Barbara Streisand
Barbara Streisandasal
2024-10-18 12:49:30915semak imbas

How to Resolve SQL_MODE=ONLY_FULL_GROUP_BY Conflict in Laravel Eloquent?

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!

Kenyataan:
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