テーブルに7つの列があり、そのうちの2つだけを選択したいとします。
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
laravel eloquentモデルでは、次のようになります
Table::where('id', 1)->get();
しかし、この式ではidが1に等しいすべての列が選択されると思います。2つの列(name、surname)だけが必要です。2つの列のみを選択する方法
テーブルに7つの列があり、そのうちの2つだけを選択したいとします。
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
laravel eloquentモデルでは、次のようになります
Table::where('id', 1)->get();
しかし、この式ではidが1に等しいすべての列が選択されると思います。2つの列(name、surname)だけが必要です。2つの列のみを選択する方法
回答:
あなたはこのようにそれを行うことができます:
Table::select('name','surname')->where('id', 1)->get();
SELECT name, surname FROM Table where id = 1
SQLクエリを実行するだけです
Table::where('id', 1)->get(['name','surname']);
all()メソッドを使用すると、以下のようにテーブルから特定の列を選択できます。
ModelName::all('column1', 'column2', 'column3');
注:Laravel 5.4
またModel::all(['id'])->toArray()
、IDを配列としてフェッチするだけです。
最初に、そのテーブルを表すモデルを作成し、次に以下のEloquentの方法を使用して、2つのフィールドのみのデータをフェッチする必要があります。
Model::where('id', 1)
->pluck('name', 'surname')
->all();
また、pluckを使用できます。
Model::where('id',1)->pluck('column1', 'column2');
pluck()
はSELECT ...
クエリを変更しないため、説明した他のメソッドよりも効率が悪いことに注意してください。代わりに、すでに返された結果セットを操作します。
1つの列の値を取得します。
Table_Name::find($id)->column_name;
このメソッドをwhere句で使用することもできます。
Table_Name::where('id',$id)->first()->column_name;
クエリビルダー:
DB::table('table_names')->find($id)->column_name;
どこでcluase:
DB::table('table_names')->where('id',$id)->first()->column_name;
または
DB::table('table_names')->where('id',$id)->first('column_name');
最後のメソッドの結果は配列です
使用できます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);
Model :: get()
YourModelName::where('id',1)->get(['id', 'name']);
最も一般的なアプローチはを使用する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()
は、、ソロ、またはオプションでselect
- と組み合わせて使用することをお勧めします。
TableName::select('username')->where('id', 1)->pluck('username');
または
TableName::where('id', 1)->pluck('username');
// username
値のみで構成されるコレクションを返します
また、オプションで、->toArray()
コレクションオブジェクトを配列に変換するために使用します。
->get()
多くのような->all()
(そして->first()
、パラメータとして持ち帰るにしたいフィールドを取ることができますなど。);
->get/all(['column1','column2'])
コレクションを復活させるでしょうが、column1
そしてcolumn2
findOrFail()
ここでメソッドを使用することもできます
例外がキャッチされない場合は、404 HTTP応答が自動的にユーザーに送信されます。これらのメソッドを使用しても500エラーが発生しない場合は、404応答を返すために明示的なチェックを記述する必要はありません。
ModelName::findOrFail($id, ['firstName', 'lastName']);
App \ Tableを使用します。... Table :: where( 'id'、1)-> get( 'name'、 'surname');
どこにもない場合
テーブル:: all( 'name'、 'surname');