我的模型中有兩個(gè)函數(shù):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(); }); }我試圖調(diào)用getPersonsByGroup控制器中的函數(shù),傳遞對(duì)回調(diào)的引用,如下所示:$students = $studGroup->getPersonsByGroup($request->group, $studGroup->joinStudentsToPersons);但是如果我將匿名函數(shù)傳遞給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(); });});我究竟做錯(cuò)了什么?
1 回答
臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果您想保留這種結(jié)構(gòu),問題的解決方案是使方法返回閉包,如下所示:
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 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
