Laravel批量赋值fill()方法无法赋值role_id问题排查
Laravel中fill()批量赋值role_id失效的解决方案
问题原因
Laravel默认开启批量赋值保护,只有在模型的$fillable属性中声明的字段,才能通过fill()、create()等批量赋值方法被赋值。你的role_id字段未被加入$fillable列表,所以fill()会自动忽略该字段。
解决方法
修改User模型,将role_id添加到$fillable数组中:
class User extends Model { /** * 可以被批量赋值的属性 * * @var array<int, string> */ protected $fillable = [ 'name', 'email', 'password', 'role_id', // 新增该行 ]; }
补充说明
- 手动赋值
$user->role_id = $request->role_id不受批量赋值保护限制,因此能正常生效 - 你已确认
$validated数组包含role_id、字段类型与数据库匹配,只需补充$fillable配置即可解决问题
内容的提问来源于stack exchange,提问作者Imran Ahmad
相关产品推荐
相关产品推荐

