Eloquent只获得一列作为数组

时间:2016-01-20 22:58:19

标签: laravel eloquent laravel-5.2

如何使用雄辩的方法在laravel 5.2中只将一列作为一维数组?

我试过了:

$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
}

5 个答案:

答案 0 :(得分:118)

您可以使用pluck方法:

Word_relation::where('word_one', $word_id)->pluck('word_two')->toArray();

有关可用于收集的方法的详细信息,您可以查看Laravel Documentation

答案 1 :(得分:10)

如果您收到多个条目,则会调用正确的方法lists

    Word_relation::select('word_two')->where('word_one', $word_id)->lists('word_one')->toArray();

答案 2 :(得分:4)

我遇到了这个问题并且认为我会澄清一个雄辩的构建器对象的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();

也可以在Collection上调用这些方法,例如

// <= 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');

答案 3 :(得分:1)

可以简而言之做到:

Model::pluck('column')

其中model是Model,例如User model和column作为列名,例如id

如果您这样做

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

&当然,在拔除之前,您还可以使用其他任何子句,例如where子句

答案 4 :(得分:-2)

我认为你可以通过 Model :: get(['ColumnName']) - &gt; toArray();

来实现它