【问题标题】:Laravel Auth User add custom dataLaravel Auth 用户添加自定义数据
【发布时间】:2017-03-06 16:35:50
【问题描述】:

我们目前正在使用 Laravel 和 Socialite 开发一个带有 Google 登录的应用程序。我们有一个 Auth 用户,他获得了许可号 ex。 264. 我们创建了一个函数,它返回一个数组,其中包含所有二进制数,这个权限号被取消了。

因为每次加载页面时调用这个函数可能有点繁重,所以我们考虑在创建 Auth::user() 时添加一次。我们曾想过在 Model 中添加一个自定义构造函数,但无法实现。

function __construct($attributes = array()) {
  parent::__construct($attributes);
  $this->permissionsArray = PermissionHelper::permissionConverter($this->permissions);
}

但是我们不能让它工作,$this 在调用这个函数时没有值。

TLDR; 在创建 Auth 用户之后,我想直接调用 permissionConverter 函数并将数据保存给用户,以便我们可以更频繁地使用它。有关如何执行此操作的任何建议?

编辑:我今天检查了所有答案,其中一个成功了,但我假设 Laravel 将经过身份验证的用户放在 SESSION 或其他东西中。我发现它没有,它每次请求都从数据库中获取所有数据。不幸的是,我们不能做我们要求的事情。所以我只需要重构脚本并使其尽可能高效(尽管对于经验不足的程序员来说,它的可读性会降低一些)。

感谢您的帮助:D

【问题讨论】:

    标签: php laravel laravel-socialite


    【解决方案1】:

    也许你可以使用这个解决方案? https://stackoverflow.com/a/25949698/7065748

    User Eloquent 模型上创建一个boot 方法

    class User extends BaseModel {
      public static function boot() {
        static::creating(function($model) {
          $model->permissionsArray = PermissionHelper::permissionConverter($model->permissions);
        });
        // do the same for update (updating) if necessary
      }
    }
    

    你就不能用这个方法吗?

    如果是新用户:

    $user = new User(); // or User:create(['...']) directly
    $user->name = 'toto';
    // and all other data
    

    $user = Auth::user();
    

    然后

    $user->permissionsArray = PermissionHelper::permissionConverter($user->permissions);
    $user->save();  
    

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2020-07-30
      • 1970-01-01
      • 2020-11-06
      • 2018-01-18
      • 2017-06-05
      • 2019-01-28
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多