web-dev-qa-db-ja.com

雄弁なlaravel:-> get()から行数を取得する方法

このコレクションを使用して行をカウントする方法を理解するのに多くの問題があります。

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

私はadding->count()を試しましたが、うまくいきませんでした。 count($wordlist)を試してみました。 a->count()メソッドとして2番目のリクエストを必要とせずに何をすべきか本当にわかりません。

38
JP Foster

回答が更新されました

countはコレクションメソッドです。クエリビルダーは配列を返します。したがって、カウントを取得するには、通常の配列の場合と同じようにカウントします。

$wordCount = count($wordlist);

ワードリストモデルがある場合は、Eloquentを使用してコレクションを取得し、コレクションのcountメソッドを使用できます。例:

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

クエリビルダーにコレクションを返すようにすることについての議論があります/ここにありました: https://github.com/laravel/framework/issues/10478

ただし、現時点では、クエリビルダーは常に配列を返します。

編集:上記のように、クエリビルダーはコレクション(配列ではない)を返すようになりました。その結果、JPフォスターが最初に試みていたことが機能します。

$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();
73
Thomas Kim

行数を直接取得する

雄弁を使う

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

Laravels countメソッドでカウントにアクセスする方が良い

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

または

$count = Model::count();
13