我的模型中有兩個函數:function getPersonsByGroup($groupId, $callback) { $group = StutGroup::where('stg_id', $groupId)->get(); $persons = []; foreach($group as $gr) { foreach($gr->students as $stud) { $persons[] = $stud->person; } } return $callback(collect($persons)); }function joinStudentsToPersons($person) { return $person->each(function ($pers) { $pers->student = \DB::connection('pgsql2')->table('students')->where('stud_pers_id', $pers->pers_id)->get(); }); }我試圖調用getPersonsByGroup控制器中的函數,傳遞對回調的引用,如下所示:$students = $studGroup->getPersonsByGroup($request->group, $studGroup->joinStudentsToPersons);但是如果我將匿名函數傳遞給getPersonsByGroup一切正常:$students = $studGroup->getPersonsByGroup($request->group, function($person) { return $person->each(function ($pers) { $pers->student = \DB::connection('pgsql2')->table('students')->where('stud_pers_id', $pers->pers_id)->get(); });});我究竟做錯了什么?
1 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
如果您想保留這種結構,問題的解決方案是使方法返回閉包,如下所示:
function joinStudentsToPersons() {
return function ($person) {
$person->each(function ($pers) {
$pers->student = \DB::connection('pgsql2')->table('students')
->where('stud_pers_id', $pers->pers_id)
->get();
});
};
}
然后這樣稱呼它:
$students = $studGroup->getPersonsByGroup($request->group, $studGroup->joinStudentsToPersons());
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消