在laravel中使用.each()时如何筛选集合行?

在laravel中使用.each()时如何筛选集合行?,laravel,laravel-collection,Laravel,Laravel Collection,我想筛选此$authors集合 $authors = Author::get(); 在我看来,我需要显示一位作者与多少本书有关。 我使用.each()将计数合并到$authors并将其返回到调用它的位置 return $authors->each(function($author, $key){ $author->count = Author::findOrFail($author->id)->books()->count();

我想筛选此
$authors
集合

$authors = Author::get();
在我看来,我需要显示一位作者与多少本书有关。
我使用.each()将
计数
合并到
$authors
并将其返回到调用它的位置

return $authors->each(function($author, $key){

            $author->count = Author::findOrFail($author->id)->books()->count();

        });
问题是“如果作者没有写过任何一本书,我如何删除/过滤它(count您应该使用它来避免和避免性能问题:

$authors = Author::withCount('books')->get();
在刀片视图中,您可以执行以下操作:

$author->books_count
如果您想在不实际加载的情况下计算关系中的结果数,可以使用
withCount
方法,该方法将在结果模型上放置
{relation}\u count


好的……我只是忘记了我的问题中的一些代码(现在更新)。这是一个很好的信息。但是如果计数值为零,我如何删除/过滤行。@海因图通只需添加简单的条件,比如
@if($author->books\u count)
来检查作者是否有任何书籍。或者你可以跳过加载没有
->has('books')书籍的作者
。如果要筛选数据,请使用
filter()
方法。谢谢@AlexeyMezenin!它与
with count()
filter()一起工作。
$author->books_count