我已经构建了一个API,它本质上有三个调用。首先,进行调用以检索令牌。接下来,我有一种自动完成功能,它返回数据和它应该查找的对应表。此数据的返回方式如下
[
{
"result": "Apples",
"table": "fruitTable"
},
{
"result": "Bread",
"table": "breadTable"
},
{
"result": "Pie",
"table": "pieTable"
}
]我的最终路线如下所示
Route::get('returnSelectedResult/{table}/{selected}', array('uses'=>'APIController@returnSelectedResult'));由此它使用上面的查找结果来获得正确的表和所选的选项。然后,我执行以下操作
public function returnSelectedResult($table, $selected)
{
$tableData = DB::table($table)->where('search_item', $selected)->get();
return response($tableData, 200);
}所以这一切都运行得很好。但是,表中的数据是平面的。因此,返回给API用户的最后一件事是这样的
[
{
"search_item": "Bread",
"num_types": 34,
"most_ordered": 'Baggette',
"most_popular_day": 'Saturday',
"average_profit": 3.5,
}
]我展示的是一个非常精简的版本,返回的数据要多得多,但它们都处于相同的级别。我需要返回给用户的是更像这样的东西
[
{
"searched" : {
"search_item": "Bread"
},
"types" : {
"num_types": 34
},
"analytics" : {
"most_ordered": 'Baggette',
"most_popular_day": 'Saturday',
"average_profit": 3.5
}
}
]实现这样的目标最好的方法是什么?
谢谢
发布于 2016-09-24 19:12:51
您可以使用查询结果显式构建数组。
发布于 2016-09-24 19:16:23
如果你真的想构建api,你应该使用转换器来更好地表示数据。
你可以使用phple团/分形,或者如果你想要完整的api包,我建议你尝试dingo/api。
发布于 2016-09-24 20:21:04
做这样的事情,现在我已经做了分析
class MainClass
{
public $searched;
public $types;
public $analytics;
}
class AnalyticsClass
{
public $most_ordered;
public $most_popular_day;
public $average_profit;
}
$obj_data = new AnalyticsClass();
$obj_data->most_ordered = 'Baggette';
$obj_data->most_popular_day = 'Saturday';
$obj_data->average_profit = 3.5;
$obj_main = new MainClass();
$obj_main->analytics = $obj_data; https://stackoverflow.com/questions/39675650
复制相似问题