【发布时间】:2019-01-17 08:53:35
【问题描述】:
我目前被困在这种情况下,现在其他开发人员想要输出 API 结构,如附图所示。
但我尽我所能,但我只得到了这些结果:
"all_projects": {
"TEST TOWNHOMES": {
"unit_types": [
{
"unit": "TOWNHOUSE 44.00"
}
]
},
"TEST HOMES": {
"unit_types": [
{
"unit": "DUPLEX WITH OUT GARAGE 44.50"
}
]
},
"TEST HOMES II": {
"unit_types": [
{
"unit": "DUPLEX WITH OUT GARAGE 44.50"
}
]
},
"TEST VILLAGE": {
"unit_types": [
{
"unit": "TOWNHOUSE 44.00"
},
{
"unit": "DUPLEX WITHOUT GARAGE 52.30"
}
]
}
我正在使用 MVC 框架,
这是我的模型的样子:
public function all_south_projects()
{
$this->db->distinct();
return $this->db->select('Project as project_name')->from('lots')
->where('available','YES')
->get()->result();
}
public function get_unit_types($projName)
{
$this->db->distinct();
return $this->db->select('UnitType as unit')->from('lots')
->where('Project',$projName)
->where('Available','YES')
->get()->result();
}
然后我的控制器是:
$resp = $this->MyModel->all_south_projects();
$test_array = array();
foreach ($resp as $value) {
$units = $this->MyModel->get_unit_types($value->project_name);
$allunits = array("unit_types"=>$units);
$allunits = (object) $allunits;
$test_array[$value->project_name] = $allunits;
}
//var_dump($test_array);
$stat = 200;
$message = 'Successfully fetched.';
if(empty($test_array)){
$empty=json_decode('{}');
json_output2($stat,'all_projects',$message,$empty);
}else{
json_output2($stat,'all_projects',$message,$test_array);
}
json_output2 在我的助手上自定义 json 格式: 这是我的代码:
function json_output2($statusHeader,$responseName,$message,$response)
{
$ci =& get_instance();
$ci->output->set_content_type('application/json');
$ci->output->set_status_header($statusHeader);
$ci->output->set_output(json_encode(array('status' =>
$statusHeader,'message' => $message,$responseName =>$response)));
}
注意:场景是: API 必须为所有具有可用单元的项目提供, 如果项目可用,则需要获取其对应的可用单元才能查看。我知道我可以进行另一个 API 调用,但是这一次,我们需要改进 UX。
有人可以启发我解决这个问题吗?谢谢!
【问题讨论】:
-
$test_array[] = ['project_name' => $value->project_name, 'unit_types' => $allUnits];可能吗?为您提供'project_name' => foo, 'unit_types' => [ foo, bar]的所需输出