gpt4 book ai didi

php - 如何根据特定列获取所有不同的行?

转载 作者:行者123 更新时间:2023-11-29 03:22:20 25 4
gpt4 key购买 nike

似乎由于 MySQL 5.7 或更高版本的更改,默认情况下启用了 SQL 模式 ONLY_FULL_GROUP_BY,所以我的旧代码如下所示:

Table::where('name', 'LIKE', '%'.$search_str.'%')
->groupBy('name')
->get();

现在抛出错误...

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

我尝试以各种方式更新我的代码以尝试使其正常工作,但没有成功。

这是我目前拥有的:

Table::where('name', 'LIKE', '%'.$search_str.'%')
->selectRaw('name, ANY_VALUE(id), ANY_VALUE(col_a), ANY_VALUE(col_b), ANY_VALUE(col_c), ANY_VALUE(col_d)')
->groupBy('name')
->get();

这不会引发任何错误,但列数据丢失。

我也试过:

Table::where('name', 'LIKE', '%'.$search_str.'%')
->groupBy('name')
->groupBy('id')
->get();

它不会根据“名称”返回不同的行。它只是返回所有内容。

我如何在 Laravel Eloquent 或原始 MySQL 中执行此操作?

最佳答案

groupBy()方法按给定键对集合的项目进行分组。你应该先得到一个集合:

Table::where('name', 'LIKE', '%'.$search_str.'%')
->get()
->groupBy('name');

关于php - 如何根据特定列获取所有不同的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42104220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com