web-dev-qa-db-ja.com

Laravel 5.2-pluck()メソッドは配列を返します

プロジェクトL5.1-> L5.2をアップグレードしようとしています。 アップグレードガイド には、はっきりしないことが1つあります。

コレクション、クエリビルダー、およびEloquentクエリビルダーオブジェクトのlistsメソッドは、pluckに名前が変更されました。メソッドのシグネチャは同じままです。

大丈夫です。名前の変更をlists()からpluck()に変更しても問題はありません。しかし、L5.0とL5.1にあった便利なpluck()メソッドはどうでしょうか?

5.0ドキュメント から:

行から単一の列を取得する

$name = DB::table('users')->where('name', 'John')->pluck('name');

L5.2の古いpluck()メソッドの代替手段は何ですか?

UPDATE:

例:

var_dump(DB::table('users')->where('id', 1)->pluck('id'));

L5.1:

// int(1)

L5.2:

// array(1) { [0]=> int(1) }
53
Limon Monte

pluck()の現在の代替はvalue()です。

82
user1669496

laravel pluckは配列を返します

クエリが次の場合:

 $name = DB::table('users')->where('name', 'John')->pluck('name');

配列は次のようになります(キーはアイテムのインデックスです。自動インクリメント値):

[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

しかし、あなたがこれを好きなら:

$name = DB::table('users')->where('name', 'John')->pluck('name','id');

キーはデータベースの実際のインデックスです。

key||value
[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

任意の値をキーとして設定できます。

7
NuOne

Laravel 5.1+では、pluckの代わりにvalue()を使用できます。

最初に出現するには、次のいずれかを使用できます

DB::table('users')->value('name');

または使用、

DB::table('users')->where('id', 1)->pluck('name')->first();
3
reshma