默认情况下,在Laravel中创建控制器时,对于基本create
操作,有store
,edit
,update
,CRUD
等空方法。 CRUD
类似于在这种情况下使用的普遍接受的技术......但是对于用户模型,我创建了两种方法:save
和get
。
public function save($user_id = FALSE, UserRequest $request)
{
$user = NULL;
if ($user_id)
$user = User::find($user_id);
else if (($request->has('email') or $request->has('username')) and $request->has('password')) {
$data = $request->only('username', 'email');
$data = array_filter($data);
$user = new User($data);
}
if (is_null($user))
return $this->ajaxResponse(['error' => TRUE, 'message' => 'User not found']);
if ($password = $request->get('password', FALSE))
$user->password = Hash::make($password);
$user->fill($request->except('password', '_token'));
$user->save();
return $this->ajaxResponse();
}
正如您所看到的,它由一个if
组成,它检查我是否需要使用现有用户或创建新用户。像firstOrCreate
方法之类的东西,除了在完成所有检查之前我不创建用户。
所以基本上我的问题是关于我应该留在传统CRUD
中还是如果它符合我的目的,我可以保留它现在。
答案 0 :(得分:1)
据我所知,Laravel控制器中的创建意味着显示创建表单和存储意味着将数据存储在存储中作为保存功能。这里的“创建”与CRUD中的“C”不同。
近年来,越来越多的框架提供了集成的函数调用,以简化路由和重复过程。正如您所说,firstOrCreate可能包含检查和保存操作,以最大限度地减少编码工作。
我的个人经验是以混合方式使用。有时,您可以使用集成功能/ lib来使代码易于阅读并快速完成。但有时您仍然需要回到基本的优化或适合定制的逻辑或过程。
从我的角度来看,这不是一个“是”或“否”的问题。
答案 1 :(得分:1)
添加到@ melson.jao的回答。
Laravel为您提供的只是指导方针。如果您希望采用自定义样式可以使代码更好,请继续。
CRUD通常用于遵守“书籍”,“项目”等实体的REST API兼容性。很少有实体需要比普通实体所需要的更多,如“用户”所述。< / p>
这将是一个设计决策,可能会得到每个开发人员的不同意见。您可以自行决定什么能使您的代码更具可读性和可维护性。
我个人意见:在这种情况下,您不需要遵守指南。
答案 2 :(得分:0)
一般来说,如果您无法判断是否可以违反您正在使用的框架所施加的做法,那么您最好不要遵循它。 < / p>
那就是说 - 遵循结构还有其他好处,只需&#34;保持传统的CRUD&#34;。 Laravel为Restful Resource Controllers提供内置功能。
这可以帮助您不必构建自己的架构风格,并确保从更广泛认可的内容中获得一致的架构约束。