Laravel Eloquentでクエリをフォローする方法は?
SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"
フォローしてみました
CategoryModel::where('catType', '=', 'Root')
->lists('catName', 'catID', 'imgPath');
しかし、その戻り値は2つのフィールドだけです。
Array ( [7] => Category 1 )
lists()
は、結果のコレクションをキー値を持つ配列に変換します。そこには2つのデータベース列しか含めることができません。それ以外の場合はselect()
を使用する必要がありますが、配列だけでなくモデルのコレクションも取得します。
$categories = CategoryModel::select('catID', 'catName', 'imgPath')
->where('catType', '=', 'Root')
->get();
CategoryModel::wherecatType('Root')
->pluck('catName', 'catID', 'imgPath');
複数の列を選択する
CategoryModel::get(['catName', 'catID', 'imgPath']);
Laravel 5.3でも動作します!
From laravel version 5.3 ^ lists()
は廃止され、代わりに関数pluck()
が使用されます。
pluck()
はコレクションを返します。単純な配列が必要な場合は、その前に->toArray()
を追加するだけです。
特定の列を取得する場合は、2つのメソッドget()
またはall()
のいずれかを使用できます
しかし、構文は異なりますget()
メソッドはarray
を引数として受け取りますとall()
メソッドはstring
を引数として:
Model :: all( 'field1'、 'field2')
CategoryModel::all('catName', 'catID', 'imgPath')->where('catType','Root');
Model :: get(['field1'、 'field2'])
CategoryModel::get(['catName', 'catID', 'imgPath'])->where('catType','Root');