2
以下查詢適用於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:5.2和5.3。並在每個代碼中安裝完全相同的代碼,以使它們與控制器,模型,路徑,.env等相同,然後在每個版本中再次運行查詢。相同的結果:在L5.2中工作並在L5.3中中斷。
我會接受你的建議並找出一個新的查詢。謝謝! – timgavin
你會推薦什麼作爲重寫? – timgavin
@timgavin - 寫一個新問題。這是關於嚴格的模式和設置。有很多關於SO的回答問題,比如「如何選擇每組最新/最舊的條目?」對於MySQL。但是我還沒有看到一個laravel解決方案。如果你在這裏發佈了一個新問題的鏈接,我會在稍後看一看。 –