Как предотвратить вставку пользовательских данных в БД при каждой перезагрузке страницы? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть эта функция, где я проверяю, может ли пользователь присоединиться к каналу, и затем я вставляю эти данные в БД.Проблема в том, что он вставляется каждый раз, когда я перезагружаю страницу.Как предотвратить это?

Broadcast::channel('chat', function ($user) {
     $ip = Request::ip();
     $time = now();
  if (auth()->check()) { 
    UserInfo::storeUser();
      return [
        'id' => $user->id,
        'ip' => $ip,
        'name' => $user->name,
        'joined' => $time
    ];
  }
});

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

По сути, вам нужен любой способ определения того, что вы уже сохранили информацию об этом пользователе. DB , сеанс или даже объект auth () -> user () ( этот зависит от варианта использования ) можетсохранить эти данные.

Взять пример сеанса:

Broadcast::channel('chat', function ($user) {
    $ip = Request::ip();
    $time = now();
    if (auth()->check() && !session()->has('user_id')){ 
        UserInfo::storeUser();
        session()->put('user_id',$user->id);
        return [
           'id' => $user->id,
           'ip' => $ip,
           'name' => $user->name,
           'joined' => $time
       ];
    }
});

и при выходе из системы:

session()->forget('user_id')

Имейте в виду, это базовый пример без особого контекста.

0 голосов
/ 27 сентября 2019

Вам нужно здесь, чтобы хранить данные session.Вот полная документация https://laravel.com/docs/5.8/session

Вот пример:

Обновление:

return [
        'id' => $user->id,
        'ip' => $ip,
        'name' => $user->name,
        'joined' => $time
    ];

С:

    $return =  [
            'id' => $user->id,
            'ip' => $ip,
            'name' => $user->name,
            'joined' => $time
        ];
    session('userData',$return);
    return $return;

Извлечь данные:

var_dump($request->session()->has('userData'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...