【发布时间】:2022-01-20 03:03:59
【问题描述】:
$response = $this->getMyTutors($data, $apiUrl);
//print_r($response);
foreach ($response as $key) {
$count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
}
$response['followersCount'] = $count;
return response()->json($response);
getMyTutors() 是对端点函数getTutorByCourseId 的 curl 请求。在 curl 请求中,我只是对从端点返回的结果进行 json 解码。如果我没有在 curl 请求中完成 json_decoding,我会得到正确的数据形式。但我必须对结果中的每个项目运行一个 foreach 循环。当我在 curl 中删除 json_decode 时,上面显示的 foreach 循环给出了错误invalid arguments supplied for foreach - Expected type 'iterable|object'. Found 'string|bool'。
function getTutorByCourseId(Request $request)
{
$course = Course::with(['files:id,FileName,FilePath', 'user:id,name'])
->select('id', 'courseDisplayName', 'aboutCourse', 'userId', 'fileId')
->where('userId', $request->tutorId)
->get();
if (!empty($course)) {
// return response()->json($course);
return $course;
}
}
return response()->json($response); 给出一个对象数组,如下所示。如何将其转换为对象数组?我已经浏览了此链接-Convert object of objects to array of objects (PHP, Laravel)。但不明白如何在我的代码中实现它。我可以得到一些帮助吗?
{
"0": {
"user": null,
"courseId": 18
},
"1": {
"user": {
"id": 1,
"name": "admin",
"aboutUser": null,
"files": null
},
"courseId": 1
},
}
print_r($response)在返回json数据前显示如下数组:
Array([0] => Array([user] =>
[courseId] => 18)
[1] => Array([user] => Array([id] => 1
[name] => admin
[aboutUser] =>
[files] =>)
[courseId] => 1))
预期输出:
[
{
"user": null,
"courseId": 18
},
{
"user": {
"id": 1,
"name": "admin",
"aboutUser": null,
"files": null
},
"courseId": 1
},
]
return $course in getTutorByCourseId 返回数据如下
[
{
"id": 1,
"courseDisplayName": "ips",
"userId": 1,
"fileId": null,
"user": {
"id": 1,
"name": "admin"
}
},
{
"id": 2,
"courseDisplayName": "ap",
"userId": 1,
"fileId": 1,
"user": {
"id": 1,
"name": "admin"
}
}
]
【问题讨论】:
标签: php arrays laravel eloquent laravel-8