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

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

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

我试过 adding->count(),但是没有用。我试过做 count($wordlist)。如果不需要第二个请求作为 a->count()方法,我真的不知道该怎么做。

423676 次浏览

Answer has been updated

count is a Collection method. The query builder returns an array. So in order to get the count, you would just count it like you normally would with an array:

$wordCount = count($wordlist);

If you have a wordlist model, then you can use Eloquent to get a Collection and then use the Collection's count method. Example:

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

There is/was a discussion on having the query builder return a collection here: https://github.com/laravel/framework/issues/10478

However as of now, the query builder always returns an array.

Edit: As linked above, the query builder now returns a collection (not an array). As a result, what JP Foster was trying to do initially will work:

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

However, as indicated by Leon in the comments, if all you want is the count, then querying for it directly is much faster than fetching an entire collection and then getting the count. In other words, you can do this:

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


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

Direct get a count of row

Using Eloquent

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


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

Using query builder

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


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

Its better to access the count with the laravels count method

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

or

$count = Model::count();

also, you can fetch all data and count in the blade file. for example:

your code in the controller

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

your code in the blade file.

\{\{ $posts->count() }}

finally, you can see the total of your posts.

//controller $count = Post::count(); return view('post', compact('count'));

//blade \{\{$count}}

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

//blade\{\{count($posts)}}