Php 按模型关系中的用户id分组

Php 按模型关系中的用户id分组,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有两个模型:报告和用户。这就是我的用户模型中的内容 public function userReport() { return $this->hasMany('App\Report', 'user_id','id'); } 这是在报告模型中 public function user() { return $this->hasOne('App\User', 'id', 'user_id'); } 控制器 public function details( $item

我有两个模型:报告和用户。这就是我的用户模型中的内容

public function userReport() {
    return $this->hasMany('App\Report', 'user_id','id');
}
这是在报告模型中

public function user() {
    return $this->hasOne('App\User', 'id', 'user_id');
}
控制器

public function details( $item_id ){

    $report = Item::find($item_id)->report;
    return view('details', compact('report'));
} 
鉴于

{!! $report->user->name !!}
在视图中,我显示了报告单个项目的所有用户。。我通过
$item\u id
查询它

问题是,如果同一个用户报告单项1+时间,我会在页面的表格中看到该用户1+时间

是否可以按用户id进行分组或计算用户id并显示
User1(4次报告)
。。。?我应该把他们分在哪里

更新:用户表

id | username | password
报告表

report_id | id | user_id | date
项目表

id | user_id | category | date_added | image
Update2:数据库中记录的图像。在这里,用户id为3的用户报告了14次。拥有
User\u id=5
的用户报告了相同的
项目\u id=14
共3次。所以我应该在
user\u id=3(14)
user\u id=3(3)
页上看到。相反,我看到17次
user\u id=3
。下面是图片

第页


应该有几种方法来解决您的问题

一种方法是(您的控制器应该是这样的)

第二种方法应该是在视图中使用
@foreach
,并检查唯一值

第三种方法应该是在控制器中使用
foreach
,并在控制器内部准备具有计算摘要的唯一数据,然后将准备好的数据传递给视图

你想用哪种溶液只是选择的问题


希望它能帮助你

应该有几种方法来解决你的问题

一种方法是(您的控制器应该是这样的)

第二种方法应该是在视图中使用
@foreach
,并检查唯一值

第三种方法应该是在控制器中使用
foreach
,并在控制器内部准备具有计算摘要的唯一数据,然后将准备好的数据传递给视图

你想用哪种溶液只是选择的问题


希望它能帮助你

试试这个。希望能有帮助

Report::where('item.id', $item_id)
    ->select('item.*','users.*',DB::raw('count(reports.report_id) as total'))
    ->join('item', 'item.id', '=', 'reports.id')
    ->join('users', 'users.id', '=', 'reports.user_id')
    ->groupBy('reports.report_id','reports.id')
    ->get();

试试这个。希望能有帮助

Report::where('item.id', $item_id)
    ->select('item.*','users.*',DB::raw('count(reports.report_id) as total'))
    ->join('item', 'item.id', '=', 'reports.id')
    ->join('users', 'users.id', '=', 'reports.user_id')
    ->groupBy('reports.report_id','reports.id')
    ->get();


报表有许多项?许多项是的。报表有许多项?许多项是的。谢谢,但Lightlight\Support\Collection::get()缺少参数1。现在出现另一个错误:
未定义属性:Lightlight\Database\Eloquent\Builder::$report
好,现在的行为类似于
groupBy
,并向用户显示1次,无论该用户有多少条记录。是否可以同时显示该用户的记录计数?谢谢,但Illumb\Support\Collection::get()缺少参数1现在出现另一个错误:
未定义属性:Illumb\Database\Eloquent\Builder::$report
好,现在的行为类似于
groupBy
,并向用户显示1次,无论该用户有多少条记录。是否可以同时显示该用户的记录计数?这仅显示一个用户。如果有其他用户报告了相同的项目,则不会显示该项目。您可以发布此型号的数据库结构吗。因此,我可以在表中为您提供更多帮助。报表中可以多次显示相同的
用户id
到相同的
id
,因此,当我加载
id(=1)
时,如果有3次
用户id(=1)
我想显示一次,但已计数,例如:
用户1(3)
是否要显示特定用户和项目的报告中上次报告的时间,对吗?
SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“item\u id”(SQL:select*from items where item\u id=14 groupby reports.user\u id order by COUNT(user\u id)asc)
这仅显示一个用户。如果有其他用户报告了相同的项目,则不会显示该项目。您可以发布此型号的数据库结构吗。因此,我可以在表中为您提供更多帮助。报表中可以多次显示相同的
用户id
到相同的
id
,因此,当我加载
id(=1)
时,如果有3次
用户id(=1)
我想显示一次,但已计数,例如:
用户1(3)
要显示特定用户和项目的报告中的上次报告时间吗?
SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“item\u id”(SQL:select*from items where item\u id=14 groupby reports.user\u id order by COUNT(user\u id)asc)