【发布时间】:2021-12-07 00:34:42
【问题描述】:
对于$response,我有一个如下所示的数组。我想单独获取user 字段和位于user 内的files 字段。我试过$response['user'] & $response['user']['files'],它显示错误undefined index。我怎样才能做到这一点?
[
{
"id": 14,
"userId": 1,
"courseDisplayName": "yuu",
"aboutCourse": "kljkl",
"user": {
"id": 1,
"name": "admin",
"profilePicId": 93,
"aboutUser": null,
"files": {
"id": 93,
"FilePath": "contentq/contentqFiles/XwyC6JHK5T/Account.png"
}
},
"files": null
}
]
我在这里尝试做的是,输入couresId 是类似[14,15] 的数组,所以对于数组中的每个项目,我想从Course、user 和files 表中获取数据,其中Course 表的id 具有输入中的值,course 表的userId 具有user 表中的id 值和course 表的fileId 具有files 表中 id 的值。属性user & files 在Course 模型中定义。
$response=null;
foreach($request->courseId as $key => $row){
$response[] = Course::with([
'user' => function($q)
{
$q->with('files:id,FilePath')->select('id', 'name' , 'profilePicId','aboutUser');
},'files:id,FilePath'])
->where('id',$row)
->get()
->makeHidden(['subjectId','skillId','courseUniqueName','active','created_at','updated_at','deleted_at','publish','course_patterns_id','paid_status','fileId','updatedBy']);
}
**EDIT**
//$res=[];
foreach($response as $row){
$res['user'] = $row->user; // error- Property [user] does not exist on this collection instance
$res['user'] = $row->first()->user;// works , but it will show only 1 set of data. i wanted all sets of data.
}
【问题讨论】:
-
不清楚您的 Course 和 User 模型是什么样的,也许您可以更新您的帖子以包含 Course.php 模型和 User.php ?此外,也许您可以使用范围,而不是对用户使用这样的子查询? laravel.com/docs/8.x/eloquent#query-scopes
-
$response 是一个数组或数组的集合。你不能访问 $response['user'] 而不循环它。要么调用 $response->first() 要么做一个 foreach 循环遍历 $response。
-
@Psycho 查看我更新的问题正文。我添加了一个 forech 循环,但它仍然显示未定义的索引
-
$res 是一个对象。试试
$res->user@user17189691 -
并删除
$res = [];这行你不需要初始化它
标签: php laravel eloquent laravel-8 eloquent-relationship