Eloquentを使用してlaravel 5.2で1つの列のみを1つの次元配列として取得する方法は?
私が試してみました:
$array = Word_relation::select('Word_two')->where('Word_one', $Word_id)->get()->toArray();
しかし、これは次のような2次元配列として提供します。
array(2) {
[0]=>
array(1) {
["Word_one"]=>
int(2)
}
[1]=>
array(1) {
["Word_one"]=>
int(3)
}
}
しかし、私はそれを次のように取得したい:
array(2) {
[0]=>2
[1]=>3
}
pluck
メソッドを使用できます。
Word_relation::where('Word_one', $Word_id)->pluck('Word_two')->toArray();
コレクションで使用できるメソッドの詳細については、 Laravel Documentation をご覧ください。
複数のエントリを受け取った場合、正しいメソッドは lists と呼ばれます。
Word_relation::select('Word_two')->where('Word_one', $Word_id)->lists('Word_one')->toArray();
この質問に出くわし、雄弁なビルダーオブジェクトのlists()メソッドがLaravel 5.2で減価され、pluck()に置き換えられたことを明確にするだろうと思いました。
// <= Laravel 5.1
Word_relation::where('Word_one', $Word_id)->lists('Word_one')->toArray();
// >= Laravel 5.2
Word_relation::where('Word_one', $Word_id)->pluck('Word_one')->toArray();
これらのメソッドは、たとえばコレクションで呼び出すこともできます
// <= Laravel 5.1
$collection = Word_relation::where('Word_one', $Word_id)->get();
$array = $collection->lists('Word_one');
// >= Laravel 5.2
$collection = Word_relation::where('Word_one', $Word_id)->get();
$array = $collection->pluck('Word_one');
以下のように簡単に行うことができます。
Model::pluck('column')
ここで、modelはUser
モデルなどのモデルであり、id
などの列名としての列
もしあなたがそうするなら
User::pluck('id') // [1,2,3, ...]
&もちろん、pluckの前にwhere
句のような他の句を持つことができます