我正在嘗試以下操作:我正在使用以下函數(shù)獲取與我的患者相關(guān)的所有 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); });給我?guī)砹艘唤M數(shù)組,如下所示:[ [ { "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", } } }, ....... ]]因為我需要返回一個元素數(shù)組,所以我組合了我得到的數(shù)組,如下所示:$result = []; foreach ($patientClinicTests as $array) { $result = array_merge($result, $array->toArray()); } return $result;這將返回一個數(shù)組,如下所示:[ { "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 語句作為一個元素數(shù)組返回。
3 回答

小怪獸愛吃肉
TA貢獻1852條經(jīng)驗 獲得超1個贊
您可以使用 all() 方法將您的集合轉(zhuǎn)換為數(shù)組:
$patientClinicTests?=?$id->patients() ????????????->with('PatientClinicTests',?'PatientClinicTests.Patient.User') ????????????->get() ????????????->pluck('PatientClinicTests') ????????????->filter(function?($value)?{?return?!empty($value);?})->all();
請注意,如果你想迭代你的數(shù)組,你應該在過濾后重建數(shù)組索引......你可以使用'values'方法來做到這一點:
$patientClinicTests?=?$id->patients() ????????????->with('PatientClinicTests',?'PatientClinicTests.Patient.User') ????????????->get() ????????????->pluck('PatientClinicTests') ????????????->filter(function?($value)?{?return?!empty($value);?})->values()->all();

元芳怎么了
TA貢獻1798條經(jīng)驗 獲得超7個贊
Flatten 方法幫助我在不使用 foreach 語句的情況下為單個數(shù)組提供 array_merge() 函數(shù):
$patientClinicTests = $id->patients() ->with('PatientClinicTests', 'PatientClinicTests.Patient.User') ->get() ->pluck('PatientClinicTests') ->filter(function ($value) { return !empty($value); })->flatten()->all();
我將按照推薦的方式使用表連接進行測試

回首憶惘然
TA貢獻1847條經(jīng)驗 獲得超11個贊
也許您可以在數(shù)組上使用 collect 方法將其對齊到單個數(shù)組中
$collection?=?collect($patientClinicTests); $collections?=?$collection->values()->all();
也許這會奏效
- 3 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消