Laravel。在toArray()转换后,不能使用StdClass类型的对象作为数组

时间:2018-01-10 12:55:05

标签: php arrays laravel object

对我而言,这看起来很奇怪。

  

不能使用stdClass类型的对象作为数组

我将查询转换为数组。

clients.aggregate([
    {$match: {"id_client_group": id_clientGroup, "id_client": id_client, "status": "active"}},
    {$group: {_id: "$name", mail:{$first:"$mail"}}}
])

选中我的变量$query = DB::table('users')->where('name','=','Alex')->get()->toArray(); ,然后显示gettype($query);
还使用Array进行了检查,并显示var_dump($query);

那么为什么在我将Array循环到foreach时我必须使用$query并且无法以数组$item->name的形式访问项目?

2 个答案:

答案 0 :(得分:0)

当您使用toArray()时,您会获得一系列对象,因此您仍然需要使用:

$item->name

如果要将其转换为数组数组,请执行以下操作:

$users = DB::table('users')->where('name', 'Alex')->get();
$users->transform(function($i) {
    return (array)$i;
});
$array = $users->toArray();

答案 1 :(得分:0)

如果您希望将结果作为array,请使用get()

$query = DB::table('users')->where('name','=','Alex')->get();

如果您希望以[{1}}使用object

获取结果
first()