对我而言,这看起来很奇怪。
不能使用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
的形式访问项目?
答案 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()