Laravel 5.6-GroupBy无法正常工作

时间:2018-07-04 01:09:54

标签: mysql laravel group-by laravel-5.6

我已经尝试了几种方法,但是它不起作用(似乎忽略了它)。所以我试过了:

if(charIn=='y'){
charMap={
{1,0,0,0,1},
{0,1,0,1,0},
{0,1,0,1,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0}};;
}

上述方法完全忽略了groupBy,只返回笔记的集合。

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

与此输出也完全相同。


在我的Note::where('user_id', $user->id)->groupBy('title')->get(); 中,数据库设置为database.php


我也尝试过使用原始数据库查询,它以一种奇怪的格式返回它(当我使用groupBy时,每个标题返回1行)

'strict' => false

我见过很多人都在面对这个问题,但是(上述)建议的方法都没有解决这个问题。

我可以使用DB::table('notes')->where('user_id', $user->id)->groupBy('title')->get(); 来实现自己想要的功能,但是尽管有groupBy可以通过1行轻松实现这一点,但是为什么要花很多功夫。

有人知道为什么它不起作用吗?

2 个答案:

答案 0 :(得分:2)

您只需要先调用-> 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);

答案 1 :(得分:0)

使用select(),然后在select

中按字段添加分组
   e.g DB::table('notes')->select('title','Other_field')->where('user_id', $user->id)->groupBy('title')->get();