"Сделал" регистрацию на сайте через Facebook с помощью Socialite. И все вроде бы работает за исключением одного. Можете объяснить почему по отдельности код работает а вместе нет? этот код регистрирует пользователя на сайте: Код (Text): public function handleProviderCallback() { $user = Socialite::driver('facebook')->user(); $user = User::firstOrCreate([ 'name'=>$user->getName(), 'email'=>$user->getEmail(), 'provider_id'=>$user->getId(), ]); Auth::Login($user, true); return redirect('/home'); } } Этот код тоже работает, он проверяет email и логинит Код (Text): if (User::where('email', '=', $user->email)) { $userexist = User::where('email', '=', $user->email)->first(); Auth::Login($userexist, true); } почему не работает если их вместе обьединить? Код (Text): $user = Socialite::driver('facebook')->user(); if (User::where('email', '=', $user->email)) { $userexist = User::where('email', '=', $user->email)->first(); Auth::Login($userexist, true); return redirect('/home'); } else { $user = User::firstOrCreate([ 'name'=>$user->getName(), 'email'=>$user->getEmail(), 'provider_id'=>$user->getId(), ]); Auth::Login($user, true); return redirect('/home'); }
Когда игрок умеет строить из конструктора машины, но не знает что за элементы входят в конструктор. Учите основы условий в php https://yandex.ru/turbo/s/internet-technologies.ru/articles/operatory-php-if-else.html
У тебя условие PHP: if(User::where('email', '=', $user->email)) возвращает Builder то есть условие всегда будет true. Поэтому чтобы работал else блок в случае не нахождения записи нужно написать условие так: PHP: User::where('email', '=', $user->email)->first()