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

2022-08-30 07:37:13

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

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

我尝试过,但没有工作。我试过做.我真的不确定在不需要第二个请求作为方法的情况下该怎么办。adding->count()count($wordlist)a->count()


答案 1

答案已更新

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

$wordCount = count($wordlist);

如果你有一个单词列表模型,那么你可以使用Eloquent来获取一个集合,然后使用集合的方法。例: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();

答案 2

直接获取行数

使用雄辩

 //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();

推荐