我已经尝试了几种方法,但是它不起作用(似乎忽略了它)。所以我试过了:
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行轻松实现这一点,但是为什么要花很多功夫。
有人知道为什么它不起作用吗?
答案 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();