使用EloquentwithCount()统计对应关系的数量调用withCount():可以帮助获取对象关联的记录数量,包括远程一对多关系。接下来我们看例子。在我们的小示例项目中,我们有三个模型:User、Post和Comment。所有的关系都可以用这三个模型来描述,先看app/User.php这个模型:publicfunctionposts(){return$this->hasMany(Post::class);}publicfunctioncomments(){return$this->hasManyThrough(Comment::class,Post::class);}现在,让我们尝试在页面上显示如下表格——用户及其文章和评论的统计列表:实现很简单,下面是UserController的控制代码:publicfunctionindex(){$users=User::withCount(['posts','comments'])->get();返回视图('用户',紧凑('用户'));传递给withCount()方法的每个参数最终都会在模型实例中创建一个属性,并将_count后缀添加到参数名称中。因此,在上面的示例中,可以通过访问$user->posts_count**和**$user->comments_count属性来获取统计信息。然后,在我们的视图文件中,我们有: @foreach($usersas$user)User @endforeach注意,withCount()既可以处理hasMany()关系,也可以处理hasManyThrough()的二级深度。不仅如此,我们甚至可以在使用withCount()时指定关联模型的过滤条件。假设,我们有一个评论表(comments),其中包含批准状态(approved)的字段。下面的例子展示了如何过滤这个字段,甚至指定一个别名:where('approved',1);}])->get();这样在视图中就可以使用$user->approved_comments_count来显示统计信息。有关withCount()方法的更多信息-查看Laravel官方文档。{{$user->name}}}/td>
