Laravel框架的后台项目,路由控制器方法中,我们可以通过依赖注入的方式拿到请求对象$request
在我们获取请求参数的时候,可以用$request->input('parameter_name')的方式获取请求输入数据
也可以通过$request->parameter_name的方式来动态获取输入数据
这种方式的好处就是,不管你有没有传这个参数,都可以直接拿来用,只是在没有传这个参数的时候获取到的值为空
在更新某个表的数据的时候,有时候会用到Laravel模型的update方法,update的参数就是一个键值数组:['name' => 'jerry', 'gender' => '男', ...]
这个时候我们可以通过快捷的方式拿到这个数组,即$request->only([parameters]) 或 $request->except([parameters])或$request->intersect([parameters])
接下来是重点:
only方法,是不管你传了哪些参数,只接受数组里的属性,如果$request里没有这个属性,就会生成一个值为空的属性
except方法,是不管你传了哪些参数,总会剔除数组里的这些属性,即update的数据是except方法参数相对于所有请求参数的补集
intersect方法,这个方法是将请求的所有参数数组与方法传递的参数数组求交集,也就是说,如果我们的intersect方法里传的是a,e,那么我们更新数据的时候,只会更新intersect方法的参数的子集
所以,在使用only方法的时候,我们一定要注意,一定要确保only参数里的所有属性都传了,否则更改的时候,会把其他属性也更改掉,建议使用intersect方法,适用范围广