2017-01-24 2 views
1

я есть результат 2 запроса в 2-х переменных и у меня есть JSON объект я хочу append результат запроса к этому JSON, а затем вернуть его пользователюAppend результат запроса к существующему объекту JSon

в мае контроллер у меня есть все результат

if ($request->wantsJson()) { 

    $agent_id = $request->user()->id; 

    $drivers_cout = Driver::all()->count(); 

    $drivers_cout_by_agent = Driver::where(['agent_id' => $agent_id])->get()->count(); 

    return $request->user(); 
} 

//the result of $request->user(); 

    #attributes: array:12 [ 
    "id" => 201702 
    "name" => "Agent" 
    "email" => "[email protected]" 
    "phone_number" => "966355826" 
    ] 

//and i want something like 

    #attributes: array:12 [ 
    "id" => 201702 
    "name" => "Agent" 
    "email" => "[email protected]" 
    "phone_number" => "966355826" 
    "drivers_count" => "96"      //How do i append these two 
    "drivers_cout_by_agent" => "16"   
    ] 

поблагодарить вас

+0

Попробуйте следующее: [Сериализация моделей и коллекций] (https://laravel.com/docs/5.3/eloquent-serialization#serializing-models-and-collections) –

ответ

2

Добавление данных в массив является просто случай ввода данных в массив с именем индекса вы хотите, чтобы иметь

if ($request->wantsJson()) { 

    $agent_id = $request->user()->id;    

    $drivers_count = Driver::all()->count();   //<-- fixed spelling 

    $drivers_cout_by_agent = Driver::where(['agent_id' => $agent_id])->get()->count(); 

    $arr = $request->user(); 
    $arr['drivers_count'] = $drivers_count; 
    $arr['drivers_cout_by_agent'] = $drivers_cout_by_agent 
    return $arr; 
} 
+0

Большое вам спасибо, я очень ценю это –

+0

Я вижу, что я немного усложнил это; D –

+0

@ PatrykUszyński i sry din't получить то, что вы сказали, вы имели в виду то, что я делаю, не прав, пожалуйста исправьте меня для лучшей практики, ia ​​kinda newbi, спасибо –

0

по Serializing Models & Collections. Вы можете просто сериализовать это JSON или массив с помощью:

return $request->user()->toJson(); 
// or 
return $request->user()->toArray(); 

Существует также раздел о добавлении данных в формат JSON: Appending Values To JSON. Но в вашей ситуации вы можете сериализовать свои данные в массиве, добавить свои значения и инкапсулировать их в json.

$returnData = $request->user()->toArray(); 
$returnData['foo'] = 'bar'; 

return json_encode($returnData); 
+0

Благодарим вас за ответ, на самом деле я хочу добавить результат запроса к объекту json –

1

Вы, кажется, есть массив и просто хотите добавить несколько элементов к нему, так что это можно сделать.

$tmp= $request->user(); 
$tmp['driver_count'] = (where you get it from); 
$tmp['count_by_id'] = (where you get it from); 
return $tmp; 

(Извините за отсутствие деталей, я на моей камере. Если это то, что вам нужно, я буду расширять/исправить позже или удалить, если это не так. Хотел, чтобы получить это к вам быстро.)

+0

Большое вам спасибо за ваше время, очень цените его, я получил решение –

+0

Несколько минут поздно, я вижу! Сотовый телефон меня замедлил. Я удалю ответ, я полагаю. –

Смежные вопросы