web-dev-qa-db-ja.com

Laravel eloquentで特定の列を選択する方法

テーブルに7列あり、そのうち2つだけを選択したいとしましょう。

SELECT `name`,`surname` FROM `table` WHERE `id` = '1';

Laravelの雄弁なモデルでは、このように見えるかもしれません

Table::where('id', 1)->get();

しかし、この式はidが1に等しいすべての列を選択し、2つの列(name、surname)だけが欲しいと思います。 2列だけを選択する方法

71
devnull Ψ

あなたはこれのようにそれをすることができます:

Table::select('name','surname')->where('id', 1)->get();
137
Table::where('id', 1)->get(['name','surname']);
38
Utkarsh Pandey

All()メソッドを使用することで、以下のようにテーブルから特定の列を選択できます。

ModelName::all('column1', 'column2', 'column3');

:Laravel 5.4

23

このようにfind()を使うこともできます。

ModelName::find($id, ['name', 'surname']);

モデルの複数のインスタンスを取得する必要がある場合は、$id変数を配列にすることができます。

15
Sammie

またModel::all(['id'])->toArray()はidを配列として取得するだけです。

11
user3888958

最初にそのTableを表すModelを作成する必要があり、それから以下のEloquent方法を使用して2つのフィールドのみのデータを取得します。

Model::where('id', 1)
         ->pluck('name', 'surname')
         ->all();
8
Mahesh Yadav

All()だけでなくget()も使用できます。

ModelName::where('a', 1)->get(['column1','column2']);
4
aleXela

以下のコードを使用してください: -

   $result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();   
3
Jitender Sharma

また、pluckを使うこともできます。

Model::where('id',1)->pluck('column1', 'column2');
2

最も一般的なアプローチは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_nameusernameの両方でコレクションを出力します。

特定の列が必要な場合は、pluck()、solo、またはオプションでselectと組み合わせて使用​​することをお勧めします。

TableName::select('username')->where('id', 1)->pluck('username');

または

username値のみで構成されるコレクションを返すTableName::where('id', 1)->pluck('username'); //

また、オプションで、コレクションオブジェクトを配列に変換するために->toArray()を使用します。

2
niklaz

Table::select ('name', 'surname')->where ('id', 1)->get ()を使うことができます。

特定のフィールドのみを選択する場合、リクエストの後半でそれらの他のフィールドにアクセスすることになった場合は、別のクエリを作成する必要があることに注意してください。 idフィールドを含めることは通常良い考えですので、laravelはモデルインスタンスに対して行った更新を書き戻す方法を知っています。

2
Josh Rumbut

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']);
1
Haritsinh Gohil

->get()(および->all()など)によく似た->first()は、元に戻したいフィールドをパラメータとして受け取ることができます。

->get/all(['column1','column2'])

column1column2だけでコレクションを取り戻すでしょう

0
Robert Pounder

以下のクエリを使うことができます。

Table('table')->select('name','surname')->where('id',1)->get();
0
Luis

findOrFail() method here 使うのもいいです

例外が捕捉されない場合は、404 HTTP応答が自動的にユーザーに送り返されます。これらのメソッドを使用しても500エラーにならない場合、404個の応答を返すために明示的なチェックを書く必要はありません。

ModelName::findOrFail($id, ['firstName', 'lastName']);
0
Jignesh Joisar

単一行を取得し、その行の単一列から取得する場合、特定の列の値を取得する1行のコードは、取得する列の指定とともにfind()メソッドを使用することです。

サンプルコードは次のとおりです。

ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];
0
Brane

1列の値を取得します。

Table_Name::find($id)->column_name;

Where句でこのメソッドを使用することもできます。

Table_Name::where('id',$id)->first()->column_name;
0
Mostafa Asadi