プロジェクト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) }
pluck()
の現在の代替はvalue()
です。
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"
]
任意の値をキーとして設定できます。
Laravel 5.1+では、pluckの代わりにvalue()を使用できます。
最初に出現するには、次のいずれかを使用できます
DB::table('users')->value('name');
または使用、
DB::table('users')->where('id', 1)->pluck('name')->first();