是 toArray 的问题
$session_list = Db::table('x_session')->get();
$session_list = $session_list->toArray()
//$session_list gettype 值为array
//toArray 只是改变session_list类型吗
$session_temp = [];
foreach ($session_list as $key => $value) {
//$value gettype 值为 object
}
它返回的就是对像数组,应该也可以当做数组用,试下
Cannot use object of type stdClass as array
Db::table('x_session')->get()->toArray();
里面的所有都变成了array
你要使用 Model,可以把对象当做数组用,DB 的不行,就是个 StdClass 对象,当做对象用的
我也发现了这个问题,如果使用模型返回的是
Illuminate\Database\Eloquent\Collection
对象,那么使用toArray可以将下级所有的都转换为数组。如果使用DB::方式,那么使用toArray只是将最外层转换为数组,里面一层还是一个sdtClass对象。那么当使用array_map或者array_reduce这种函数的时候它是只能接受array的不接受object。在补充一下,使用
DB::
方式返回的是Illuminate\Support\Collection
,所以问题应该出在这里吧。