【发布时间】:2021-08-29 04:50:57
【问题描述】:
我正在将二维数组转换为 JSON 对象。
现在我的控制器返回这个输出:
[
[
{
"id": 1,
"title": "V1",
"project_id": 1
}
],
[]
]
想把它转换成这样:
[
{
"id": 1,
"name": "Laravel"
},
{
"id": 2,
"name": "Wordpress"
}
]
我的控制器代码:
$user = auth()->user();
$projectVersions = array();
foreach($user->projects as $project)
{
$projectId = $project->pivot->project_id;
$projectVersions[] = Version::where('project_id', $projectId)
->where('created_by', $user->id)
->get();
}
return $projectVersions;
当我使用@John Lobo 建议的以下代码时,它会返回以下输出:
{
"id": 2,
"name": "Hadayat Niazi",
"email": "niazicr801@gmail.com",
"is_admin": 0,
"email_verified_at": null,
"created_at": "2021-06-11T15:13:00.000000Z",
"updated_at": "2021-06-11T15:13:00.000000Z",
"projects": [
{
"id": 1,
"name": "Laravel",
"pivot": {
"user_id": 2,
"project_id": 1
},
"versions": [
{
"id": 1,
"title": "V1"
}
]
}
]
}
显示用户项目和版本:
我再次更新@John Lobo 的代码,他想查看输出
$user = User::with(['projects', 'projects.versions'])
->find(auth()->user()->id);
$result = $user->projects->map(function ($project) {
return [
$project->versions,
];
});
return $result;
输出代码
[
[
[
{
"id": 1,
"title": "V1",
"project_id": 1,
"version": "1.22",
"created_by": 2,
"is_publish": 0,
"feature": "<b>In this ipdate asdsdasd</b>",
"bug_fix": "<p><b>sdfdffffffffff</b></p>",
"created_at": "2021-06-12T08:08:21.000000Z",
"updated_at": "2021-06-12T08:08:21.000000Z"
},
{
"id": 2,
"title": "v2",
"project_id": 1,
"version": "2.12",
"created_by": 2,
"is_publish": 0,
"feature": "adsdasdsadas",
"bug_fix": "sddasdas",
"created_at": null,
"updated_at": null
}
]
],
[
[]
]
]
【问题讨论】:
-
显示控制器代码
-
您的回复中是否使用了
json_encode() -
能发一下项目模型吗
-
这条线是获取多个数据
$projectVersions[] = Version::where('id', $projectId)->get() ;还是你想要单行? -
您想要项目的版本还是只需要版本?您的模型也会有所帮助
标签: json laravel object multidimensional-array