web-dev-qa-db-ja.com

配列として1列のみを取得します

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
}
55
Riiwo

pluck メソッドを使用できます。

Word_relation::where('Word_one', $Word_id)->pluck('Word_two')->toArray();

コレクションで使用できるメソッドの詳細については、 Laravel Documentation をご覧ください。

120
Bogdan

複数のエントリを受け取った場合、正しいメソッドは lists と呼ばれます。

    Word_relation::select('Word_two')->where('Word_one', $Word_id)->lists('Word_one')->toArray();
10
moxx

この質問に出くわし、雄弁なビルダーオブジェクトの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');
4
SamBremner

以下のように簡単に行うことができます。

Model::pluck('column')

ここで、modelはUserモデルなどのモデルであり、idなどの列名としての列

もしあなたがそうするなら

User::pluck('id') // [1,2,3, ...]

&もちろん、pluckの前にwhere句のような他の句を持つことができます

1
APu