Laravel 如何获取数组而不是 QueryBuilder select() 语句的对象?
Posted
技术标签:
【中文标题】Laravel 如何获取数组而不是 QueryBuilder select() 语句的对象?【英文标题】:Laravel how get array and not object of QueryBuilder select() statement? 【发布时间】:2016-08-25 13:29:16 【问题描述】:我已经写了那段代码,但是我想要一个数组,这可能吗?
$results = DB::table('pages')->select('id', 'link')->orderBy('id', 'asc')->get();
【问题讨论】:
使用 toArray() 函数 【参考方案1】:要在数组中获取 laravel 查询生成器结果,请检查:
$results = DB::table('pages')->select('id', 'link')->orderBy('id', 'asc')->get()->toArray();
或者
如果您更喜欢使用 Query Builder 而不是 Eloquent,这里是解决方案
$results = DB::table('pages')->select('id', 'link')->orderBy('id', 'asc')->get();
第一个解决方案
$array = (array) $result;
第二个解决方案
$array = get_object_vars($result);
第三种解决方案
$array = json_decode(json_encode($result), true);
希望对你有帮助
【讨论】:
我尝试但是... Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN) HELP 调用数组上的成员函数 toArray() 更新回答@user3211908【参考方案2】:您可以从 API docs 中看到,get()
函数返回 Collection 或 Builder。
Laravel 集合有toArray()
方法(在docs 中描述)如下所示:
$collection = collect(['name' => 'Desk', 'price' => 200]);
$collection->toArray();
/*
[
['name' => 'Desk', 'price' => 200],
]
*/
因此,您可以执行以下操作:
$results = DB::table('pages')->select('id', 'link')->orderBy('id', 'asc')->get()->toArray();
【讨论】:
我尝试但是... Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN) HELP 调用数组上的成员函数 toArray() @user3211908 你能打电话给dd(DB::table('pages')->select('id', 'link')->orderBy('id', 'asc')->get());
截屏,审查敏感信息吗?最好能确切地看到返回的内容。以上是关于Laravel 如何获取数组而不是 QueryBuilder select() 语句的对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何从原始查询中检索结果集作为数组而不是 Laravel 3 中的对象
如何使用 Laravel response()->json() 返回空对象而不是空数组