テーブルに7列あり、そのうち2つだけを選択したいとしましょう。
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
Laravelの雄弁なモデルでは、このように見えるかもしれません
Table::where('id', 1)->get();
しかし、この式はidが1に等しいすべての列を選択し、2つの列(name、surname)だけが欲しいと思います。 2列だけを選択する方法
あなたはこれのようにそれをすることができます:
Table::select('name','surname')->where('id', 1)->get();
Table::where('id', 1)->get(['name','surname']);
All()メソッドを使用することで、以下のようにテーブルから特定の列を選択できます。
ModelName::all('column1', 'column2', 'column3');
注 :Laravel 5.4
このようにfind()
を使うこともできます。
ModelName::find($id, ['name', 'surname']);
モデルの複数のインスタンスを取得する必要がある場合は、$id
変数を配列にすることができます。
またModel::all(['id'])->toArray()
はidを配列として取得するだけです。
最初にそのTableを表すModelを作成する必要があり、それから以下のEloquent方法を使用して2つのフィールドのみのデータを取得します。
Model::where('id', 1)
->pluck('name', 'surname')
->all();
All()だけでなくget()も使用できます。
ModelName::where('a', 1)->get(['column1','column2']);
以下のコードを使用してください: -
$result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();
また、pluckを使うこともできます。
Model::where('id',1)->pluck('column1', 'column2');
最も一般的なアプローチはModel::select
を使用することですが、モデルクラス内のアクセサメソッドで定義されたすべての属性をレンダリングアウトする可能性があります。そのため、モデルに属性を定義したとします。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user's first name.
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
そしてTableName::select('username')->where('id', 1)->get();
を使います。
ユーザー名だけではなく、first_name
とusername
の両方でコレクションを出力します。
特定の列が必要な場合は、pluck()
、solo、またはオプションでselect
と組み合わせて使用することをお勧めします。
TableName::select('username')->where('id', 1)->pluck('username');
または
username
値のみで構成されるコレクションを返すTableName::where('id', 1)->pluck('username');
//
また、オプションで、コレクションオブジェクトを配列に変換するために->toArray()
を使用します。
Table::select ('name', 'surname')->where ('id', 1)->get ()
を使うことができます。
特定のフィールドのみを選択する場合、リクエストの後半でそれらの他のフィールドにアクセスすることになった場合は、別のクエリを作成する必要があることに注意してください。 idフィールドを含めることは通常良い考えですので、laravelはモデルインスタンスに対して行った更新を書き戻す方法を知っています。
laravel 5.3からget()
メソッドのみを使用して、テーブルの特定の列を取得できます。
YouModelName::get(['id', 'name']);
または、laravel 5.4からall()
メソッドを使用して、選択したフィールドを取得することもできます。
YourModelName::all('id', 'name');
上記のメソッドget()
またはall()
の両方で、where()
を使用することもできますが、構文は両方で異なります。
モデル:: all()
YourModelName::all('id', 'name')->where('id',1);
モデル:: get()
YourModelName::where('id',1)->get(['id', 'name']);
->get()
(および->all()
など)によく似た->first()
は、元に戻したいフィールドをパラメータとして受け取ることができます。
->get/all(['column1','column2'])
column1
とcolumn2
だけでコレクションを取り戻すでしょう
以下のクエリを使うことができます。
Table('table')->select('name','surname')->where('id',1)->get();
findOrFail()
method here 使うのもいいです
例外が捕捉されない場合は、404 HTTP応答が自動的にユーザーに送り返されます。これらのメソッドを使用しても500エラーにならない場合、404個の応答を返すために明示的なチェックを書く必要はありません。
ModelName::findOrFail($id, ['firstName', 'lastName']);
単一行を取得し、その行の単一列から取得する場合、特定の列の値を取得する1行のコードは、取得する列の指定とともにfind()
メソッドを使用することです。
サンプルコードは次のとおりです。
ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];
1列の値を取得します。
Table_Name::find($id)->column_name;
Where句でこのメソッドを使用することもできます。
Table_Name::where('id',$id)->first()->column_name;