Using array_map
并转换为数组应该足够了:
$data = array_map(function($object){
return (array) $object;
}, $data);
我也不会在循环内运行查询。您应该尝试在一次查询中从数据库获取该数据。像这样的事情可以工作:
$data = DB::table('order_details')
->join('orders', 'order_details.oid', '=', 'orders.oid')
->select('order_details.oid', 'orders.ostatus')
->whereIn('order_details.oid', $oid)->get();
Edit
正如另一个答案中提到的那样,让我解释一下如何通过将 PDO 设置为来完成相同的任务FETCH_ASSOC
:
DB::setFetchMode(PDO::FETCH_ASSOC);
$data = DB::table('order_details') .... ->get();
但是,这会全局更改请求其余部分的获取模式(至少在您不打开新连接的情况下)。要保存,您应该稍后将其更改回来:
DB::setFetchMode(PDO::FETCH_ASSOC);
$data = DB::table('order_details') .... ->get();
DB::setFetchMode(PDO::FETCH_CLASS);
或者,如果您不确定使用什么默认值,甚至可以先备份它:
$fetchModeBefore = DB::getFetchMode();
DB::setFetchMode(PDO::FETCH_ASSOC);
$data = DB::table('order_details') .... ->get();
DB::setFetchMode($fetchModeBefore);