次のクエリはLaravel 5.2では動作しますが、Laravel 5.3では動作しません。Laravel 5.3 groupBy()壊れていますか?
$messages = Message::with('sender.profile', 'recipient.profile')
->where('sender_id', 1)
->orWhere('recipient_id', 1)
->groupBy('thread')
->get();
5.3で実行した場合、あなたはそれがデータベースの問題だと言う前に、私が覚えて、今、次のエラーメッセージ
SQLSTATE[42000]: Syntax error or access violation: 1055
'tmp_laravel.messages.id' isn't in GROUP BY (SQL: select * from `messages`
where `sender_id` = 1 or `recipient_id` = 1 group by `thread`)
を受け取る:この同じクエリが同じデータベース上Laravel 5.2で動作します。だから、私のバージョンのMariaDBがL5.2でうまく動かないはずです。
さらに、Sequel Proで直接クエリを実行した場合は機能します。
実際、私がアプリをアップグレードするときにやったことではないことを確かめるために、Laravelの新しいコピーを2つインストールしました:5.2と5.3。コントローラ、モデル、ルート、.envなどまでは全く同じコードをインストールし、各バージョンで再度クエリを実行しました。同じ結果:L5.2で動作し、L5.3で動作します。
私はあなたのアドバイスを受け取り、新しいクエリを見つけます。ありがとう! – timgavin
書き換えに何をお勧めしますか? – timgavin
@timgavin - 新しい質問を書いてください。これは厳密なモードと設定に関するものです。 "グループごとに最新の/最古のエントリを選択する方法"のように、多くの回答があります。 MySQLの場合しかし、私はララベルの解決策を見ていません。ここに新しい質問へのリンクを投稿すると、後でそれを見ていきます。 –