我已经构建了一个基本上有三个调用的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
}
}
]
实现这样的目标的最佳途径是什么?
由于
答案 0 :(得分:1)
您可以使用查询结果显式构建数组。
答案 1 :(得分:1)
如果你真的想构建api,你应该使用变换器来更好地呈现数据。
你可以使用phpleague / fractal或者如果你想要完整的api包我推荐你尝试dingo / api。
答案 2 :(得分:0)
做这样的事, 现在我已经完成了分析
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;