php - 更新 Laravel 模型中的不可填充字段

标签 php laravel eloquent

我有我的用户表,当你完成整个过程时,默认表 Laravel 附带 php artisan make:auth东西,我添加了一个 bool 值 system_admin列,以及其他几个类似的列

现在,当有人注册到该站点时,我不希望恶意的人能够给自己这个权利,所以我没有将该字段放在 fillable 中。 User.php 模型文件中的数组。

那么第一个问题是:出于正确的原因,这是正确的决定吗?

但是现在我正在处理一个系统管理页面,它应该允许人们修改这样的属性,但在我的 route ,只有系统管理员才能访问,我的代码如下所示:

public function updateUser($userId, Request $request) {
        $user = User::find($userId);
        $update = $request->all();
        $user->update($update);

当然,因为这些列不是 fillable ,此请求不适用于这些字段。

但我想要它,因为这个特定的路由受到中间件的保护,中间件验证 system_admin 应该有权访问它。

那么如何更新这些不可填充的列,而不允许非系统管理员更新相同的列呢?

最佳答案

我使用 lagbox answer 提出了一个替代解决方案,该解决方案遍历我 route 的每个更新变量键:

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());
}

我希望这样做没有任何问题。

关于php - 更新 Laravel 模型中的不可填充字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425127/

相关文章:

php - 使用 "maatwebsite/excel": "2.1" 在 laravel 5.3 中导出表时将日期与时间分开

php - Laravel 5.1 Eloquent ORM随机返回不正确的关系-*重大更新*

php - 家庭计算机上的 LAMP 堆栈作为公共(public) Web 服务器

php - MySQL 查询确实需要很长时间才能加载然后超时

Laravel Serve 命令不尊重 --env 参数

php - Laravel 使用多个 where 子句选择数据并返回任何数据透视表数据

php - 文件上传php

php - mysql中的longblob和longtext有什么区别?

laravel - 使用正则表达式忘记缓存 laravel

php - 如何提高亚马逊sqs排队速度?