Menyelesaikan masalah "Ralat sintaks atau pelanggaran akses: 1055" dalam Laravel
Apabila menggunakan WhereIn dan GroupBy dalam pertanyaan yang sama, anda mungkin menghadapi ralat seperti "SQLSTATE[42000]: Ralat sintaks atau pelanggaran akses: 1055". Ini menunjukkan pelanggaran terhadap keperluan SQL untuk memasukkan semua lajur bukan agregat dalam klausa KUMPULAN OLEH.
Untuk menyelesaikan isu ini, terdapat dua pilihan.
Lumpuhkan Mod Ketat
Dalam fail config/database.php anda, di bawah tatasusunan 'mysql', tetapkan 'ketat' ke palsu. Ini akan melumpuhkan semua tetapan mod ketat.
Tentukan Mod Ketat Yang Dibenarkan
Sebagai alternatif, anda boleh membiarkan 'ketat' sebagai benar dan menambah mod tertentu pada pilihan 'mod' . Untuk membenarkan pengumpulan mengikut satu lajur tanpa memasukkannya dalam klausa GROUP BY, ulas mod 'ONLY_FULL_GROUP_BY'.
'mysql' => [ ... 'strict' => true, 'modes' => [ // 'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION' ], ]
Anda boleh terus menggunakan WhereIn dan GroupBy tanpa menghadapi ralat "1055".
Nota: Adalah disyorkan untuk menggunakan mod ketat untuk keselamatan dan data sebab integriti. Walau bagaimanapun, anda mungkin perlu melumpuhkannya buat sementara waktu untuk pertanyaan yang memerlukan pengumpulan mengikut lajur tidak teragregat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Ralat sintaks atau pelanggaran akses: 1055' Laravel Apabila Menggunakan WhereIn dan GroupBy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!