За последние 24 часа нас посетили 20277 программистов и 1080 роботов. Сейчас ищут 769 программистов ...

не выполняется условие if()

Тема в разделе "Laravel", создана пользователем Qvei, 17 июн 2020.

  1. Qvei

    Qvei Новичок

    С нами с:
    10 ноя 2019
    Сообщения:
    60
    Симпатии:
    4
    "Сделал" регистрацию на сайте через Facebook с помощью Socialite. И все вроде бы работает за исключением одного. Можете объяснить почему по отдельности код работает а вместе нет?
    этот код регистрирует пользователя на сайте:
    Код (Text):
    1. public function handleProviderCallback()
    2.     {
    3.  
    4.  
    5.         $user = Socialite::driver('facebook')->user();
    6.  
    7.  
    8.        
    9.             $user = User::firstOrCreate([
    10.                 'name'=>$user->getName(),
    11.                 'email'=>$user->getEmail(),
    12.                 'provider_id'=>$user->getId(),
    13.             ]);
    14.  
    15.             Auth::Login($user, true);
    16.             return redirect('/home');
    17.        
    18.  
    19.      
    20.        
    21.     }
    22. }
    Этот код тоже работает, он проверяет email и логинит
    Код (Text):
    1. if (User::where('email', '=', $user->email)) {
    2.             $userexist = User::where('email', '=', $user->email)->first();
    3.             Auth::Login($userexist, true);
    4.        }
    почему не работает если их вместе обьединить?
    Код (Text):
    1. $user = Socialite::driver('facebook')->user();
    2.  
    3.         if (User::where('email', '=', $user->email)) {
    4.             $userexist = User::where('email', '=', $user->email)->first();
    5.             Auth::Login($userexist, true);
    6.             return redirect('/home');
    7.         } else {
    8.             $user = User::firstOrCreate([
    9.                 'name'=>$user->getName(),
    10.                 'email'=>$user->getEmail(),
    11.                 'provider_id'=>$user->getId(),
    12.             ]);
    13.  
    14.             Auth::Login($user, true);
    15.             return redirect('/home');
    16.         }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Qvei нравится это.
  3. S_t_e_e_p

    S_t_e_e_p Активный пользователь

    С нами с:
    12 июл 2012
    Сообщения:
    181
    Симпатии:
    4
    У тебя условие
    PHP:
    1. if(User::where('email', '=', $user->email))
    возвращает Builder то есть условие всегда будет true.
    Поэтому чтобы работал else блок в случае не нахождения записи нужно написать условие так:
    PHP:
    1. User::where('email', '=', $user->email)->first()
     
    #3 S_t_e_e_p, 18 июн 2020
    Последнее редактирование: 18 июн 2020