【问题标题】:Laravel 5.4 Zizaco/entrust - user soft deleteLaravel 5.4 Zizaco/entrust - 用户软删除
【发布时间】:2018-02-12 04:13:39
【问题描述】:

如何防止在用户软删除时分离角色?
$user->hasRole('subscriber') => true
$user->delete()
$user->hasRole('subscriber') => false
$user->restore()
@987654325 @ => 错误

【问题讨论】:

    标签: laravel laravel-5 laravel-5.4 entrust


    【解决方案1】:

    查看EntrustUserTrait 第 69-80 行。

    /**
     * Boot the user model
     * Attach event listener to remove the many-to-many records when trying to delete
     * Will NOT delete any records if the user model uses soft deletes.
     *
     * @return void|bool
     */
    public static function boot()
    {
        parent::boot();
        static::deleting(function($user) {
            if (!method_exists(Config::get('auth.model'), 'bootSoftDeletes')) {
                $user->roles()->sync([]);
            }
            return true;
        });
    }
    

    如果你没有bootSoftDeletes,我认为你不要使用 Laravel 自己的 SoftDeletes trait。

    class User extends Authenticatable
    {
        use SoftDeletes;
        use EntrustUserTrait;
        ...
    

    【讨论】:

      猜你喜欢
      • 2016-12-04
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多