【发布时间】:2018-04-16 22:15:01
【问题描述】:
为什么我需要在 laravel Model 文件夹中为文件定义函数。当从模块表中读取模块扩展模型值时,假设我现在有一个模型 Module.php。可以在控制器中使用函数,为什么还需要函数来操作数据库?
这里是 Module.php:
public function getStudentModules($id) {
$student = Students::where('user_id', $id)->get();
\DB::setFetchMode(\PDO::FETCH_ASSOC);
$modules = \DB::table('course_modules')->
where('course_id', '=', $student[0]->course_id)->
select('module_id')->
get();
\DB::setFetchMode(\PDO::FETCH_CLASS);
$results = Module::join('users', 'modules.lecturer_id', '=', 'users.id')->
select('users.email', 'modules.id', 'modules.lecturer_id', 'modules.name', 'modules.code')->
where('modules.semester', '=', $student[0]->semester)->
whereIn('modules.id', $modules)->get();
return $results;
}
这里是控制器:
public function lecturerViewExaminations($id)
{
$examinations = /*Module::join('examination', 'modules.id', '=', 'examination.module_id')->
select('modules.name as modulename', 'modules.code as modulecode', 'examination.name', 'examination.startdate', 'examination.enddate', 'examination.duration', 'examination.type', 'examination.code', 'examination.status', 'examination.id')->
where('modules.lecturer_id', '=', $id)->get();*/
return json_encode($examinations);
}
当我可以在控制器中输入该函数时,为什么要在 Module.php 中定义?
【问题讨论】:
-
没有不重复
-
因为模型应该包含业务逻辑并且应该“建模”您的数据。控制器是将模型与视图联系起来的胶水。 View 是您的应用程序的响应消息(输出)
-
如果你想要“原因”,我与许多优秀编程的原则、DRY(不要重复自己)、关注点分离、责任......等有关。
-
这是重复的,因为您显然不了解模型是什么以及它为什么存在。