背景
Laravelでtableをselectする際に重複したカラムを絞り込みたいと思って、groupByを使った。 そしたら以下のようなエラーがSQLSTATE[42000]: Syntax error or access violation: 1055 'laravel-shortcut.Tags.admin_id' isn't in GROUP BY
解決方法_1(推奨)
→SELECT部分にGROUP化するカラムをちゃんといれる
例えば、以下のようにする
Tag::select('id', 'name')
->groupBy('id')
->get();
以下のようにワイルドカードを使うとエラーが出る
Tag::select('Tags.*')
->groupBy('id')
->get();
解決方法_2
→config/database.phpを修正する
以下のように書く
config/database.php
'strict' => true,
//追記
'modes' => [
// 'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
//追記
このように書くことで、SELECTで書いたものだけをGROUPBYさせようとする、やつを無効にできる