我对laravel很陌生。使用Laravel 8。当保存数据时,我在很多例子中看到了下面的方法。
在控制器中
$emp = new Employee();
$emp->emp_name = $request->emp_name;
$emp->emp_no = $request->emp_no;
$emp->email = $request->email;
$emp->save();
我的疑问是,根据MVC的原则,控制器是用来连接模型和视图的,这是一个正确的做法还是必须在模型中做这一部分?
我正在寻找一些指导来学习最佳实践。
2条答案
按热度按时间vhmi4jdf1#
您也可以尝试以下方式:
型号
ykejflvf2#
在MVC架构中,模型层负责管理数据,包括验证、存储和检索数据等任务;控制器层处理用户的输入并控制应用程序的流程;视图层负责向用户呈现UI。
在您提供的代码中,控制器正在创建Employee模型的新示例,设置其属性,然后调用保存方法将数据持久化到数据库。这是Laravel中的常见做法,并且完全可以接受这样做。
然而,为了严格遵守MVC原则,持久化数据的逻辑最好放在模型层。您可以在Employee模型中创建一个方法,它接受一个数据数组并处理保存过程。这样,控制器只需要将数据传递给模型,模型会处理其余的事情。
在控制器中
在模型中
在这个重构的代码中,控制器只是将请求数据传递给模型中的saveEmployee方法,模型负责将数据保存到数据库。
这种方法让模型负责管理数据,而控制器只是充当模型和视图之间的中介。这是一个很好的实践,因为它使您的代码更有组织,更容易维护,并遵循MVC原则。