Rumah > pembangunan bahagian belakang > tutorial php > Laravel WhereIn dan GroupBy: Bagaimana untuk Menyelesaikan 'Ralat 1055'?

Laravel WhereIn dan GroupBy: Bagaimana untuk Menyelesaikan 'Ralat 1055'?

Barbara Streisand
Lepaskan: 2024-12-08 03:21:11
asal
841 orang telah melayarinya

Laravel WhereIn and GroupBy: How to Resolve the

Laravel: Memahami '1055 Ralat' dalam WhereIn dan GroupBy Queries

Masalah:

Dalam Laravel, cuba untuk gunakan kedua-dua klausa WhereIn dan GroupBy dalam satu pertanyaan menghasilkan perkara berikut ralat:

SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY
Salin selepas log masuk

Penjelasan:

Secara lalai, konfigurasi pangkalan data Laravel menguatkuasakan mod SQL yang ketat, yang memberi mandat bahawa setiap lajur yang dirujuk dalam klausa WHERE juga mesti muncul dalam klausa GROUP BY jika pertanyaan mengandungi operasi GROUP BY. Dalam kes khusus ini, lajur id disertakan dalam klausa WhereIn tetapi tidak dalam klausa GroupBy, menyebabkan ralat.

Penyelesaian:

Terdapat dua penyelesaian yang mungkin untuk menangani isu ini:

Pilihan 1: Lumpuhkan Strict Mod

Untuk melumpuhkan mod ketat, navigasi ke fail config/database.php dan ubah suai tetapan tatasusunan mysql seperti berikut:

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

Dengan menetapkan ketat kepada palsu, anda dengan berkesan lumpuhkan semua peraturan mod ketat.

Pilihan 2: Tentukan Spesifik Mod

Sebagai alternatif, jika anda ingin mengekalkan mod ketat sambil hanya melumpuhkan peraturan khusus yang menyebabkan isu, ubah suai pilihan 'mod' dalam tatasusunan 'mysql' dalam config/database.php. Sebagai contoh, untuk melumpuhkan mod ONLY_FULL_GROUP_BY, tambahkan baris berikut:

'modes' => [
    // Disable this to allow grouping by one column
    'ONLY_FULL_GROUP_BY',
    // Other strict mode options
]
Salin selepas log masuk

Maklumat Tambahan:

Secara amnya dinasihatkan untuk menggunakan pilihan kedua (menentukan khusus mod) kerana ia membolehkan anda melumpuhkan hanya peraturan mod ketat yang diperlukan sambil mengekalkan faedah mod ketat. Dengan menyemak dokumentasi untuk sistem pengurusan pangkalan data khusus anda (cth., MySQL), anda boleh menentukan mod tambahan yang mungkin sesuai untuk mengendalikan ralat ini.

Atas ialah kandungan terperinci Laravel WhereIn dan GroupBy: Bagaimana untuk Menyelesaikan 'Ralat 1055'?. 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