约束查询 get 使用 toArray 仍然还是 stdClass
我使用约束查询:
$result = DB::table('cache_1')->where('name','abc')->get()->toArray();
结果出来第一层是array数组,可是我如果要获取里面的值 发现还是stdClass;
比如,我获取第一个结果$result[0] 就能获取到一个数据,但是我需要获取这个数据里的id
比如$result[0]['id'] 这样,我想获取id 就会发现,嗯?报错Cannot use object of type stdClass as array,
这是见了什么鬼,为啥toArray只转了第一次层,而里面的并没有转成array;
所以我想问一下,是我操作问题嘛? 还是他就是酱紫?解决方法是我自己在foreach一次吗?
这样我觉得又耗费了一些执行时间和资源,所以有内置函数来解决这个问题的吗?
我不信就只有我一人。。。
我曲线救国了一下,在get后面加一句:
->map(function ($value) {return (array)$value;})->toArray();
这样,不知道这个map是不是一个闭包。
试试这个吧
$result = DB::table('cache_1')->where('name','=','abc')->pluck('name')->toArray();