背景
laravel 5.3 以後預設開啟 mysql嚴格模式(
strict
)
在mysql在嚴格模式下, 并且開啟了ONLY_FULL_GROUP_BY的情況下,
group by 的字段沒有出現在 select 的語句中會報錯.關閉了嚴格模式就不會報錯.
示例
public static function orders($phase)
{
return self::select(DB::raw("SUM(orders) as orders"),"type","users_id","name")
->groupBy("type","name")
->where("phase",$phase)
->get();
}
會出現如下錯誤,當然*号内的内容是不同的
Syntax error or access violation: 1055 '***' isn't in GROUP BY
解決方案
laravel
出現上述錯誤是
sql_mode
設定導緻的問題,修改
config/database.php
配置檔案的
strict => false
即可關閉了嚴格模式: