据我了解(如果我错了,请纠正我),背包只能处理$ 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-不能两者都使用。

10-07 12:49