【发布时间】:2016-10-19 09:26:27
【问题描述】:
您好,我想知道是否可以将列值作为字符串获取。而不是数组中的数组:
当前查询:Number::limit('1000')->get(['number'])->toArray()
此刻的结果是这样的:
最好的结果:
【问题讨论】:
标签: php arrays laravel laravel-5
您好,我想知道是否可以将列值作为字符串获取。而不是数组中的数组:
当前查询:Number::limit('1000')->get(['number'])->toArray()
此刻的结果是这样的:
最好的结果:
【问题讨论】:
标签: php arrays laravel laravel-5
在您的toArray() 调用之前,添加pluck('number'):
$result = Number::limit('1000')->get(['number'])->pluck('number')->toArray();
就是这样!这将从您的结果集合中仅提取 number 属性,并为您提供一个单级数组。
之所以有效,是因为您从get() 获得了一个集合:
Eloquent 返回的所有多结果集都是 Illuminate\Database\Eloquent\Collection 对象的实例,包括通过 get 方法检索或通过关系访问的结果。
还有pluck 方法:
https://laravel.com/docs/5.1/collections#method-pluck
更新
@wunch 在 cmets 中提供的另一种更简洁的方法:
$result = Number::limit('1000')->lists('number')->toArray();
【讨论】:
$result = Number::limit('1000')->get(['number'])->toArray(); $results = collect($result)->flatten(); dd($results); 但不是这个(第一个代码):$result = Number::limit('1000')->get(['number'])->flatten()->toArray(); dd($result);
flatten) 在普通集合上效果很好,但我同意它在 Eloquent 对象集合上失败了。在本地测试,并在 Eloquent 合集上进行采摘。
Number::limit('1000')->lists('short_name')->all()。我还应该注意,如果您有大量数据并且担心性能,您可能应该在其中添加一个 select 语句来告诉数据库只返回该列(而不是整个模型的数据)。