2016-10-24 7 views
0

В настоящее время мы работаем над приложением с Google Login с Laravel с Socialite. У нас есть пользователь Auth, который получает номер разрешения ex. 264. Мы создали функцию, которая возвращает массив со всеми двоичными числами, этот номер разрешения отключен.Laravel Auth Пользователь добавляет пользовательские данные

Поскольку вызов этой функции каждый раз, когда загрузка страницы может быть тяжелой, мы думали добавить ее один раз при создании Auth :: user(). Мы подумали о добавлении пользовательского конструктора в Model, но мы не можем заставить его работать.

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

Но мы не можем заставить его работать, $this не имеет значения при вызове этой функции.

TLDR; Непосредственно после создания пользователя Auth я хочу вызвать функцию разрешенийConverter и сохранить данные пользователю, чтобы мы могли использовать его чаще. Любые предложения о том, как это сделать?

EDIT: Я проверил все ответы сегодня, с одним из них, но я предположил, что Laravel поставил аутентифицированного пользователя на СЕССИИ или что-то в этом роде. Я выяснил, что это не так, и он получает все данные из базы данных по каждому запросу. К сожалению, мы не могли делать то, о чем мы просили. Поэтому мне просто пришлось реорганизовать сценарий и сделать его максимально эффективным (хотя он стал менее понятным для менее опытных программистов).

За помощью на помощь: D

ответ

1

Возможно, вы сможете использовать это решение? https://stackoverflow.com/a/25949698/7065748

Создать на User красноречивый модели в 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();