Bagaimana untuk Menyelesaikan SQL_MODE=ONLY_FULL_GROUP_BY Konflik dalam Laravel Eloquent?

Barbara Streisand
Lepaskan: 2024-10-18 12:49:30
asal
999 orang telah melayarinya

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,
    ]
]
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php
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