laravel - Laravel:如何访问数组内的对象
问题描述
我试图返回访问对象数组中的属性,它给出了这个错误Exception: Property [id] does not exist on this collection instance.
这是我尝试过的:
protected function formatted($classroom)
{
return [
'courses' => [
'id' => $classroom->courses->id,
'name' => $classroom->courses->name,
'slug' => $classroom->courses->slug,
'coursteachers' => [
'id' => '$classroom->courses->coursteachers->id',
'email' => '$classroom->courses->coursteachers->email',
'uid' => '$classroom->courses->coursteachers->uid',
]
],
];
}
这是实际数据:
"courses": [
{
"id": 1,
"name": "Analytics",
"slug": "analytics",
"status_id": 1,
"deleted_at": null,
"pivot": {
"classroom_id": 2,
"courses_id": 1
},
"coursteachers": [
{
"id": 3,
"uid": "S0120-46890",
"email": "teacher@vschool.com",
"user_type": "Teacher",
}]
}]
解决方案
您需要遍历courses
并且courseteachers
因为它们都代表一个数组而不是一个对象
protected function formatted($classroom)
{
$result = [];
foreach($classroom->courses as $course) {
$result[] = [
'courses' => [
'id' => $classroom->courses->id,
'name' => $classroom->courses->name,
'slug' => $classroom->courses->slug,
'coursteachers' => $this->getCourseTeachers($cours)
],
];
}
return $result;
}
private function getClassroomTeachers($classroom) {
$result = [];
foreach($classroom->courses as $cours)
{
foreach ($cours->coursteachers as $key => $teacher) {
$result[] = [
// 'coursteachers'=> [
'id' => $teacher->id,
'email' => $teacher->email,
'uid' => $teacher->uid,
'last_name' => $teacher->profile->last_name,
'first_name' => $teacher->profile->first_name,
'middle_name' => $teacher->profile->middle_name,
// ],
];
}
}
return $result;
}
推荐阅读
- xamarin.forms - How to display an Admob interstitial, after a page has loaded in Xamarin Forms?
- hive - 蜂巢中日期提取的正则表达式
- r - raster::plotRGB() 有效,但 tm_rgb() 给出“ind[!isna] <- m2 NAs are not allowed in subscripted assignments 中的错误”
- python - 朴素贝叶斯分类器不起作用,更喜欢垃圾邮件
- c# - C#/CLI 包装器“无法加载文件或程序集”
- python - 用 Beautiful Soup 和 Selenium 一起刮时出错
- node.js - 正则表达式替换文本数组中的主题标签
- angularjs - 在主干和 Angularjs 的情况下,Highcharts 默认比例间隔不同
- javascript - flexbox list column-reverse 并从顶部开始
- nginx - 使用 nginx 入口控制器为金丝雀版本启用会话亲和性