我没有使用foreach
获取和数组的所有键值,它只给出了第一个键值。
$order_id = DB::table('order')->where('delivery_boy_id', $delivery_boy_id)->where('is_accept', 1)->whereRaw('delivery_completed_at < time_of_assignment')->get();
当我运行此代码时,我得到two key value
array:2 [0 => {#325
+"id": 37
+"order_id": 8261
+"delivery_boy_id": 8}1 => {#326
+"id": 38
+"order_id": 8261
+"delivery_boy_id": 8]
使用此json
响应后,我的响应仅为one key value
foreach($order_id as $value){ $values = $value) };
$this->response['items'] = $order_id;
return json_encode($this->response);
答案 0 :(得分:0)
Dd表示转储和死亡,因此它会停止执行。如果你为每个循环中的dd,你将只获得循环中的当前值(即第一个),因为它将停止执行,你将永远不会到达第二个循环。使用var_dump允许执行继续并转储变量。
如果您只是想将Json返回给用户,您只需返回查询结果,因为laravel会为您处理序列化。你不需要循环结果。请参阅文档:
https://laravel.com/docs/5.1/eloquent-serialization
您正在覆盖循环中的$ value。因此,每次通过for循环时,它都会用当前$值覆盖$ value,因此它只包含1个对象。您不需要手动进行序列化,请使用laravel辅助方法
同样在您的代码段中,您循环使用$ order,但查询结果是否已分配给$ order_id?我假设这是因为缩写了你的代码
答案 1 :(得分:0)
检查这个
$order_id = DB::table('order')->where('delivery_boy_id', $delivery_boy_id)->where('is_accept', 1)->whereRaw('delivery_completed_at < time_of_assignment')->get();
// return $order_id;(returns json array)
$data = [];
foreach($order_id as $order)
{
var_dump($order);
//in first loop first array will come
//second loop second array
$data[]=[
'id' => $order['id'],
'..' => '..'
];
}
return $data;
}