据我了解(如果我错了,请纠正我),背包只能处理$ fillable字段。并不是整个laravel都是$ fillable和$ guarded之间的分隔吗?
MWE:
在User.php中:
class User extends Authenticatable {
protected $guarded = ['password'];
}
在UserCrudController.php中:
public function update(UpdateRequest $request)
{
$this->handlePasswordInput($request);
return parent::updateCrud($request);
}
将导致:
SQLSTATE[HY000]: General error: 1364 Field 'password' doesn't have a default value (SQL: insert into `users` (`name`, `email`, `updated_at`, `created_at`)
在对MySQL使用“严格”设置时,因为“密码”字段是$ guarded。
是否有适当的解决方法来分隔Backpack中的$ fillable和$ guarded字段?
谢谢。
最佳答案
您应该只使用一个-$ fillable或$ guarded。我建议使用$ fillable,它更适合未来。
从Laravel docs:
虽然$ fillable用作应“
批量分配,您也可以选择使用$ guarded。守卫的
属性应包含您不希望使用的属性数组
可批量分配。不在数组中的所有其他属性将为mass
可分配的。因此,$ guarded函数就像一个“黑名单”。当然啦
应该使用$ fillable或$ guarded-不能两者都使用。