我有我的用户表,当你完成整个过程时,默认表 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/