我试图在我的用户模型中保护“name”和“email”属性,因为我不希望我的用户在注册后能够更改它们。
我的用户模型如下所示:
protected $fillable = [
'province',
'city',
'street',
'postal',
'cellphone',
'facebook',
'instagram',
];
protected $guarded = [
'name',
'email',
'password',
'account_type',
'verified_type',
];
注册后,默认情况下,laravel mass会按如下方式指定这些值:
//Create the user
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'province' => $data['province'],
'city' => $data['city'],
'street' => $data['street'],
'postal' => $data['postal'],
'cellphone' => $data['cellphone'],
'trial_ends_at' => \Carbon\Carbon::now()->addMonths(3),
'account_type' => $accountType,
]);
但这对我来说是一个错误,因为'name'没有默认值并且不可为null。我理解为什么会出现错误以及如何修复它,但我想知道如果名称和电子邮件没有默认/可空属性,我应该如何分配它们。例如,类似于:
$user = new User();
$user->name = $request->name;
$user->email = $request->email;
$user->save();
$user->update([
//the rest of the mass assignable values
]);
还是有更简单的方法?
2条答案
按热度按时间ktca8awb1#
您可以使用一个变种,并从保护属性中删除名称。看这里的文件
电子邮件也是如此
xzlaal3s2#
可以通过将其添加到模型中来完成。
希望代码是自扩展的。