Arrays 如何在Laravel 5.*中返回具有相同名称键的嵌套数组的响应?
我正在尝试使用Laravel和Angular 4实现treetable 为了完成这项任务,我在Angular中搜索了支持Treetable的好库之后,找到了适合我需要的库 我已经整合了一切,到目前为止看起来还不错 唯一的问题是,当我使用Api从后端primifaces树表获取数据时,无法识别来自LaravelAPI的json结构。原因是该库支持不同的Json结构 下面是Primifaces支持的Json结构Arrays 如何在Laravel 5.*中返回具有相同名称键的嵌套数组的响应?,arrays,angular,multidimensional-array,laravel-5.3,laravel-5.4,Arrays,Angular,Multidimensional Array,Laravel 5.3,Laravel 5.4,我正在尝试使用Laravel和Angular 4实现treetable 为了完成这项任务,我在Angular中搜索了支持Treetable的好库之后,找到了适合我需要的库 我已经整合了一切,到目前为止看起来还不错 唯一的问题是,当我使用Api从后端primifaces树表获取数据时,无法识别来自LaravelAPI的json结构。原因是该库支持不同的Json结构 下面是Primifaces支持的Json结构 { "data": [ {
{
"data":
[
{
"data":{
"name":"Documents",
"size":"75kb",
"type":"Folder"
},
"children":[
{
"data":{
"name":"Work",
"size":"55kb",
"type":"Folder"
},
"children":[
{
"data":{
"name":"Expenses.doc",
"size":"30kb",
"type":"Document"
}
},
{
"data":{
"name":"Resume.doc",
"size":"25kb",
"type":"Resume"
}
}
]
},
{
"data":{
"name":"Home",
"size":"20kb",
"type":"Folder"
},
"children":[
{
"data":{
"name":"Invoices",
"size":"20kb",
"type":"Text"
}
}
]
}
]
},
{
"data":{
"name":"Pictures",
"size":"150kb",
"type":"Folder"
},
"children":[
{
"data":{
"name":"barcelona.jpg",
"size":"90kb",
"type":"Picture"
}
},
{
"data":{
"name":"primeui.png",
"size":"30kb",
"type":"Picture"
}
},
{
"data":{
"name":"optimus.jpg",
"size":"30kb",
"type":"Picture"
}
}
]
}
]
}
laravel从我的API返回的json格式如下所示
{
"data": [
{
"uuid": 110,
"name": "Acuzyt Tablets",
"Parent_ID": 65,
"ContentStart_ID": 20026,
"children": [
{
"uuid": 275,
"name": "Hansenf",
"Parent_ID": 110,
"ContentStart_ID": 22608,
"children": []
}
]
},
{
"uuid": 111,
"name": "Pluserix",
"Parent_ID": 65,
"ContentStart_ID": 24050,
"children": [
{
"uuid": 276,
"name": "Manuel",
"Parent_ID": 111,
"ContentStart_ID": 22609,
"children": []
}
]
},
{
"uuid": 112,
"name": "Abbott - Vancomycin",
"Parent_ID": 65,
"ContentStart_ID": 19944,
"children": [
{
"uuid": 272,
"name": "Mozaicos",
"Parent_ID": 112,
"ContentStart_ID": 22605,
"children": []
}
]
},
{
"uuid": 113,
"name": "Abic Leucovorin Sol",
"Parent_ID": 65,
"ContentStart_ID": 19946,
"children": [
{
"uuid": 273,
"name": "Hansenm Mangole",
"Parent_ID": 113,
"ContentStart_ID": 22606,
"children": []
},
{
"uuid": 277,
"name": "Mangole",
"Parent_ID": 113,
"ContentStart_ID": 22610,
"children": []
}
]
},
{
"uuid": 114,
"name": "Abic Vincristine",
"Parent_ID": 65,
"ContentStart_ID": 19947,
"children": []
}
]
}
getFileSystem(): any {
return this.http.get('http://apiurl/api/v1/treetable')
.toPromise()
.then(res => <TreeNode[]> res.json().data)
.then(data => { return data; });
}
ngOnInit():void {
this.nodeService.getFileSystem().then(data => this.data = data);
let newdat = this.data;
console.log(newdat);
this.cols = [
{field: 'uuid', header: 'Uuid'},
{field: 'name',header: 'Name'},
{field: 'Parent_ID', header: 'ParentID'},
{field: 'ContentStart_ID', header: 'StartID'}
];
}
所以当我使用我的API时,Primifaces不显示记录值,我得到了未定义的角度
返回我的API的Laravel代码如下所示:
public function json(){
$page = $this->request->get('page',1);
$perPage = 5;
$projects = Project::find(65);
$childs = $projects->nestedProject($projects->uuid,$page, $perPage);
return response()->json(['data'=>$childs->toArray()],201);
}
从角度来看,服务是这样的
{
"data": [
{
"uuid": 110,
"name": "Acuzyt Tablets",
"Parent_ID": 65,
"ContentStart_ID": 20026,
"children": [
{
"uuid": 275,
"name": "Hansenf",
"Parent_ID": 110,
"ContentStart_ID": 22608,
"children": []
}
]
},
{
"uuid": 111,
"name": "Pluserix",
"Parent_ID": 65,
"ContentStart_ID": 24050,
"children": [
{
"uuid": 276,
"name": "Manuel",
"Parent_ID": 111,
"ContentStart_ID": 22609,
"children": []
}
]
},
{
"uuid": 112,
"name": "Abbott - Vancomycin",
"Parent_ID": 65,
"ContentStart_ID": 19944,
"children": [
{
"uuid": 272,
"name": "Mozaicos",
"Parent_ID": 112,
"ContentStart_ID": 22605,
"children": []
}
]
},
{
"uuid": 113,
"name": "Abic Leucovorin Sol",
"Parent_ID": 65,
"ContentStart_ID": 19946,
"children": [
{
"uuid": 273,
"name": "Hansenm Mangole",
"Parent_ID": 113,
"ContentStart_ID": 22606,
"children": []
},
{
"uuid": 277,
"name": "Mangole",
"Parent_ID": 113,
"ContentStart_ID": 22610,
"children": []
}
]
},
{
"uuid": 114,
"name": "Abic Vincristine",
"Parent_ID": 65,
"ContentStart_ID": 19947,
"children": []
}
]
}
getFileSystem(): any {
return this.http.get('http://apiurl/api/v1/treetable')
.toPromise()
.then(res => <TreeNode[]> res.json().data)
.then(data => { return data; });
}
ngOnInit():void {
this.nodeService.getFileSystem().then(data => this.data = data);
let newdat = this.data;
console.log(newdat);
this.cols = [
{field: 'uuid', header: 'Uuid'},
{field: 'name',header: 'Name'},
{field: 'Parent_ID', header: 'ParentID'},
{field: 'ContentStart_ID', header: 'StartID'}
];
}
我在这里试图实现的是从Laravel后端获得与primifaces相同的json格式
如果您查看这两个json,您会发现primifaces的json为每个json对象获取了
数据。您需要修改json输出,您可以使用转换器来完成此操作。好的,让我看看链接