🐷

【エラー解消】syntax error or access violation: 1055

2022/06/06に公開

環境

今回の環境は以下の通りです。

  • PHP8.1
  • Laravel8

テーブル例

サンプルのテーブルを用意しました。

id sender message sent_at
1 TOM おはよう 2022-06-01
2 TOM こんにちは 2022-06-03
3 HIRO 今日暇? 2022-06-04
4 KAORU 遊ぼうよ 2022-06-04
5 KEN ねぇねぇ 2022-06-05
6 HIRO 電話しても良い? 2022-06-07

結論

結論から言うと、
GROUP BY で指定したカラムは、SELECTに入れる必要があります。

例えば、

$messages = Message::select('id','sender','message','sent_at')
->groupby('sender')
->get();

この場合、エラーが起きます。

syntax error or access violation: 1055 expression #2 of select list is not in group by clause and contains nonaggregated column...

GROUP BYの指定カラムを、SELECTにも入れましょう。

$messages = Message::select('id','sender','message','sent_at')
->groupby('id','sender','message','sent_at')
->get();

これでエラーは解消できます。

Discussion