laravel5.6-groupby不工作

50pmv0ei  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(288)

我试过几种方法,但都不管用(好像忽略了它)。所以我试着:

$user->notes()->groupBy('title')->get();

上面的方法完全忽略groupby,只返回注解集合。

Note::where('user_id', $user->id)->groupBy('title')->get();

和这个输出完全一样。
在我的 database.php ,数据库设置为 'strict' => false 我也尝试过使用raw db query,它以一种奇怪的格式返回它(使用groupby时为每个标题返回1行)

DB::table('notes')->where('user_id', $user->id)->groupBy('title')->get();

我见过很多人面对这个问题,但是没有一个建议的方法(上面)解决这个问题。
我可以通过使用 collection->each(function ($note) {...} ) 然而,虽然有groupby可以用1行轻松地实现这一点,但为什么繁重的工作。。
有人知道它为什么不起作用吗?

xam8gpfp

xam8gpfp1#

您只需要先调用->get(),然后调用->groupby()方法。这是因为在sql查询中,首先需要选择元素,然后选择组。
所以你的代码应该是这样的:

DB::table('notes')->where('user_id', $user->id)->get()->groupBy('title');

下面是一个按查询分组的示例:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
iq0todco

iq0todco2#

使用select()并在select中按字段添加组

e.g DB::table('notes')->select('title','Other_field')->where('user_id', $user->id)->groupBy('title')->get();

相关问题