ChatGPT解决这个技术问题 Extra ChatGPT

雄辩的 laravel:如何从 ->get() 获取行数

我在弄清楚如何使用这个集合来计算行数时遇到了很多麻烦。

$wordlist = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
                ->get();

我尝试了 adding->count(),但没有成功。我试过做count($wordlist)。如果不需要第二个请求作为 a->count() 方法,我不确定该怎么做。


T
Thomas Kim

答案已更新

count 是一个收集方法。查询生成器返回一个数组。因此,为了获得计数,您只需像通常使用数组一样计算它:

$wordCount = count($wordlist);

如果你有一个 wordlist 模型,那么你可以使用 Eloquent 来获取一个 Collection,然后使用 Collection 的 count 方法。例子:

$wordlist = Wordlist::where('id', '<=', $correctedComparisons)->get();
$wordCount = $wordlist->count();

有/曾经讨论过让查询生成器在此处返回集合:https://github.com/laravel/framework/issues/10478

但是到目前为止,查询构建器始终返回一个数组。

编辑:如上所述,查询构建器现在返回一个集合(不是数组)。结果,JP Foster 最初尝试做的事情将会奏效:

$wordlist = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
            ->get();
$wordCount = $wordlist->count();

但是,正如 Leon 在评论中指出的那样,如果您想要的只是计数,那么直接查询它比获取整个集合然后获取计数要快得多。换句话说,您可以这样做:

// Query builder
$wordCount = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
            ->count();

// Eloquent
$wordCount = Wordlist::where('id', '<=', $correctedComparisons)->count();

使用 where 子句直接访问 count() 比返回整个集合更快。例如,如果这是对整个用户表的计数,则可能仅返回 1m 个结果来计数它们,这将使用大量资源。
对我来说,即使有更多结果,查询生成器也会给出计数 1。使用相同的 queryBuilder 我返回其他结果。
它可以与 db:table 一起按预期工作
P
Parth kharecha

直接获取行数

使用雄辩

 //Useing Eloquent
 $count = Model::count();    

 //example            
 $count1 = Wordlist::count();

使用查询生成器

 //Using query builder
 $count = \DB::table('table_name')->count();

 //example
 $count2 = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)->count();

这应该在顶部 <3
雄辩的更优雅
R
RJH

最好使用 laravel 计数方法访问计数

$count = Model::where('status','=','1')->count();

或者

$count = Model::count();

S
Sayed Sajad Hosseini

此外,您可以获取刀片文件中的所有数据和计数。例如:

您在控制器中的代码

$posts = Post::all();
return view('post', compact('posts'));

您在刀片文件中的代码。

{{ $posts->count() }}

最后,您可以看到您的帖子总数。