我正在尝试以下操作:我正在使用以下函数获取与我的患者相关的所有 clinic_tests:public function getPatientsClinicTests(Specialist $id) { $patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); }); $result = []; foreach ($patientClinicTests as $array) { $result = array_merge($result, $array->toArray()); } return $result; }第一组代码:$patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); });给我带来了一组数组,如下所示:[ [ { "id": 16, "patient_id": 7, "medical_condition_id": null, "patient": { "id": 7, "user_id": 7, "pigment_id": 14, "id_medical_history": "6219116421", "user": { "id": 7, "name": "Austen Wiegand", } } }, ..... ], [ { "id": 22, "patient_id": 1, "medical_condition_id": null, "patient": { "id": 7, "user_id": 1, "pigment_id": 14, "id_medical_history": "6219116421", "user": { "id": 7, "name": "Gregor Wiegand", } } }, ....... ]]因为我需要返回一个元素数组,所以我组合了我得到的数组,如下所示:$result = []; foreach ($patientClinicTests as $array) { $result = array_merge($result, $array->toArray()); } return $result;这将返回一个数组,如下所示:[ { "id": 16, "patient_id": 7, "medical_condition_id": null, "patient": { "id": 7, "user_id": 7, "pigment_id": 14, "id_medical_history": "6219116421", "user": { "id": 7, "name": "Austen Wiegand", } } },我想知道是否有更聪明的选择,可以使用 Eloquent 而不是 foreach 语句作为一个元素数组返回。
3 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您可以使用 all() 方法将您的集合转换为数组:
$patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); })->all();
请注意,如果你想迭代你的数组,你应该在过滤后重建数组索引......你可以使用'values'方法来做到这一点:
$patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); })->values()->all();
元芳怎么了
TA贡献1798条经验 获得超7个赞
Flatten 方法帮助我在不使用 foreach 语句的情况下为单个数组提供 array_merge() 函数:
$patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); })->flatten()->all();
我将按照推荐的方式使用表连接进行测试
回首忆惘然
TA贡献1847条经验 获得超11个赞
也许您可以在数组上使用 collect 方法将其对齐到单个数组中
$collection = collect($patientClinicTests); $collections = $collection->values()->all();
也许这会奏效
- 3 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消