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 中的对象

如何从原始查询中检索结果集作为数组而不是 Laravel 3 中的对象

如何使用 Laravel response()->json() 返回空对象而不是空数组

如何在 laravel 5.4 中仅获取 created_at 日期而不是时间

Laravel 分页不适用于数组而不是集合

带有 keyBy 的 Laravel 响应返回对象而不是数组