📅  最后修改于: 2023-12-03 15:41:27.465000             🧑  作者: Mango
在 Laravel 中,关系模型可以通过 withCount
方法轻松地获取与之关联的模型记录数量。这将返回一个带有计数值的属性,可以方便地用于排序、筛选等操作。
$posts = App\Post::withCount('comments')->get();
在示例中,Post
模型关联了 Comment
模型。使用 withCount
方法将会返回包含 comments_count
属性的 Post
对象。
可以使用 orderBy
方法对计数值进行排序:
$posts = App\Post::withCount('comments')->orderBy('comments_count', 'desc')->get();
在此示例中,$posts
变量将包含所有 Post
记录,按评论数量从高到低排序。
也可以通过 whereHas
方法进行筛选操作:
$posts = App\Post::withCount('comments')->whereHas('comments', function ($query) {
$query->where('approved', true);
})->get();
此示例中,$posts
变量将包含所有包含至少一个已批准评论的 Post
记录,并且每个记录将包含评论计数值。
withCount
方法是 Laravel Eloquent ORM 中一个非常方便的特性,可以轻松地获取任何关系模型的记录数量,并进行排序、筛选等操作。