web-dev-qa-db-ja.com

Laravel Eloquentで特定のフィールドを選択する方法は?

Laravel Eloquentでクエリをフォローする方法は?

SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"

フォローしてみました

CategoryModel::where('catType', '=', 'Root')
                ->lists('catName', 'catID', 'imgPath');

しかし、その戻り値は2つのフィールドだけです。

Array ( [7] => Category 1 )
8
rkaartikeyan

lists()は、結果のコレクションをキー値を持つ配列に変換します。そこには2つのデータベース列しか含めることができません。それ以外の場合はselect()を使用する必要がありますが、配列だけでなくモデルのコレクションも取得します。

$categories = CategoryModel::select('catID', 'catName', 'imgPath')
                           ->where('catType', '=', 'Root')
                           ->get();
23
lukasgeiter
CategoryModel::wherecatType('Root')
            ->pluck('catName', 'catID', 'imgPath');
3
Khan Shahrukh

複数の列を選択する

CategoryModel::get(['catName', 'catID', 'imgPath']);

Laravel 5.3でも動作します!

3
Harry Bosh

From laravel version 5.3 ^ lists()は廃止され、代わりに関数pluck()が使用されます。

pluck()はコレクションを返します。単純な配列が必要な場合は、その前に->toArray()を追加するだけです。

0
lewis4u

特定の列を取得する場合は、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');
0
Haritsinh Gohil