2017-01-24 59 views
1

我有2个变量2查询的结果和我有一个JSON对象我想查询结果append到JSON,然后它可以返回给用户追加查询结果到一个现有的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我没有得到你所说的,你的意思是我的方式是请不要纠正我的最佳做法,ia有点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

几分钟迟到了,我明白了!手机放慢了我的速度。 :)我想我会删除答案。 –