TKo*_*KoL 5 php laravel eloquent
我有我的 User 表,当你完成所有工作时 laravel 附带的默认表php artisan make:auth
,并且我添加了一个布尔system_admin
列和其他几个类似的列
现在,当有人注册到该网站时,我不希望恶意者能够授予自己该权利,因此我没有将该字段放入fillable
User.php 模型文件的数组中。
那么第一个问题:这是出于正确原因的正确决定吗?
但现在我正在开发一个系统管理页面,它应该允许人们修改类似的属性,但在我的路线中,只能由系统管理员访问,我的代码如下所示:
public function updateUser($userId, Request $request) {
$user = User::find($userId);
$update = $request->all();
$user->update($update);
Run Code Online (Sandbox Code Playgroud)
当然,因为这些列不是fillable
,所以此请求不适用于这些字段。
但我想要它,因为这个特定的路由受到中间件的保护,该中间件验证 system_admin 是否应该有权访问它。
那么,如何更新这些不可填写的列,而又不允许非系统管理员更新相同的列呢?
我使用 lagbox 答案提出了一个替代解决方案,该解决方案遍历我的路线中的每个更新变量键:
public function updateUser($userId, Request $request) {
$user = User::find($userId);
$update = $request->all();
foreach($update as $key => $value) {
$user->$key = $value;
}
$user->save();
$newUser = User::find($userId);
return response()->json($newUser->toJson());
}
Run Code Online (Sandbox Code Playgroud)
我希望这样做不会有什么问题。
归档时间: |
|
查看次数: |
9151 次 |
最近记录: |