2016-07-20 6 views
0

Я не получаю все ключевые значения и массивы, используя foreach, что дает только первое значение ключа.Как получить все ключевые значения массива в laravel?

$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

точно! когда вы 'dd' в цикле foreach, он умирает с первой попытки, поэтому получает первый ключ. попробуйте добавить var сверху, который будет содержать массив значений, а затем установить внутри цикла foreach, а затем вернуть его за пределы цикла, чтобы получить все необходимые вам данные. – jsd

ответ

0

Dd означает дамп и умереть, он останавливается выполнение. Если вы dd в a для каждого цикла, вы получите только текущее значение в цикле (I.е первое), потому что оно остановит выполнение, и вы никогда не достигнете второго цикла. Используйте var_dump, чтобы разрешить выполнение продолжить и сбрасывать переменные.

Если вы просто хотите вернуть Json пользователю, вы можете просто вернуть результат своего запроса, поскольку larvel обрабатывает сериализацию для вас. Вам не нужно перебирать результат. Смотрите документацию:

https://laravel.com/docs/5.1/eloquent-serialization

Вы перезапись $ значения в цикле. Поэтому каждый раз, когда он проходит через каждый цикл, он перезаписывает значения $ с текущим значением $, поэтому он будет содержать только один объект. Вам не нужно выполнять сериализацию вручную, используйте методы помощника laravel

Также в вашем фрагменте кода вы перебираете $ order, но результат вашего запроса присваивается $ order_id? Я предполагаю, что это из-за сокращенный код

+0

ya, но я не получаю все ключевые значения даже в ответ json. –

+0

Вы пробовали использовать var dump, а не dd, чтобы предотвратить останов вашего цикла – ExoticChimp

+0

. Я попытался после этого получить оба значения ключа. но когда я использую это как ответ json, он дает только первое ключевое значение. –

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; 
    }