0

MySQL结构

id
key
display_name
value
details
group
created_at
updated_at

Laravel 资源索引

    public function index()
    {

        $settings = Setting::groupBy('group')->select('id','group as name')->orderBy('id', 'ASC')->get();
        
        return view('settings.general'), compact('settings'));
    }

当我运行代码时,它的错误如何:

SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“demodb.settings.id”;这与 sql_mode=only_full_group_by 不兼容(SQL: select id, groupas namefrom settingsgroup by grouporder by idasc)

4

2 回答 2

0

每列都必须在 GROUP By 中或具有示例中的聚合函数MIN(id)

public function index()
{

    $settings = Setting::groupBy('group')->select('MIN(d) AS id,group as name')->orderBy('id', 'ASC')->get();
    
    return view('settings.general'), compact('settings'));
}
于 2021-06-13T19:35:39.070 回答
0

当您按“组”分组时,每个组可以有多个 id,因此这是逻辑的 pb,您不能*在选择列表中拥有 id。

*因为您的查询无法猜测

2个解决方案,具体取决于您想要做什么:

  • 从选择中检索 id

  • 将 id 添加到组中

于 2021-06-13T19:27:46.057 回答