首页 > 解决方案 > 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",
           }]
      }]

标签: laraveleloquent

解决方案


您需要遍历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;
}

推荐阅读