Dalam Laravel Eloquent, apabila melaksanakan pertanyaan yang melibatkan pengumpulan, anda mungkin menghadapi ralat yang serupa dengan:
SQLSTATE[42000]: Expression #1 of SELECT list is not in GROUP BY clause ... incompatible with sql_mode=only_full_group_by
Ralat ini biasanya timbul apabila lajur yang digunakan dalam pertanyaan tidak disertakan dalam klausa GROUP BY.
Penyelesaian:
Untuk menyelesaikan isu ini, satu pendekatan yang disyorkan adalah untuk melumpuhkan mod ketat MySQL dalam tetapan sambungan pangkalan data. Ini boleh dicapai dengan menambahkan baris berikut pada fail konfigurasi pangkalan data anda (cth., config/database.php):
<code class="php">'connections' => [ 'mysql' => [ // MySQL 5.6 behavior 'strict' => false, // MySQL 5.7 behavior 'strict' => true ] ],</code>
Selain itu, anda boleh meneroka tetapan konfigurasi lain yang disediakan dalam catatan blog Matt Stauffer untuk mencari tetapan optimum untuk persekitaran pangkalan data khusus anda. Dengan melumpuhkan mod ketat MySQL, anda membenarkan lajur tidak teragregat digunakan dalam klausa GROUP BY, menyelesaikan ralat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat SQL Kerana SQL_MODE Tidak Serasi dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!