2017-02-11 7 views
2

Я интеграции Facebook входа в веб-приложение, но я получаю эту ошибку:Laravel 5,4 - Создание пользователя

ErrorException in SessionGuard.php line 407: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, string given, called in /Applications/XAMPP/xamppfiles/htdocs/shop/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 294 and defined

Я видел, что этот вопрос, когда я создаю нового пользователя:

public function findOrCreateUser($user, $provider) 
{ 
    $authUser = User::where('provider_id', $user->id)->first(); 
    // if user exist login 
    if ($authUser) { 
     return $authUser; 
    } 

    // if user don't exist - Create new user 
    $test = DB::table('users')->insert([ 
       'name'  => $user->name, 
       'email' => $user->email, 
       'provider' => $provider, 
       'provider_id' => $user->id 
      ]); 

    return 'Hello'; // just try if it work! 
} 

Пользователь создан, но я делаю ошибку выше. Я не вижу своего сообщения «Привет». Если я заменил метод create следующим образом:

return User::create([ 
     'name'  => $user->name, 
     'email' => $user->email, 
     'provider' => $provider, 
     'provider_id' => $user->id 
]); 

это хорошо работает. Но я не хочу останавливаться после создания пользователя; Я хотел бы вернуться к другому взгляду.

ответ

0

Существует несколько способов вставки новой строки в таблицу в laravel.

Один из способов сделать это является

User::create([ 
     'name'  => $user->name, 
     'email' => $user->email, 
     'provider' => $provider, 
     'provider_id' => $user->id 
]); 
return view('your_view'); 

Но вы должны иметь это в вашей модели (для массового назначения)

protected $fillable = ['name','email','provider','provider_id']; 

Другой способ вставить новую строку в следующем

$user_database = new User; 
$user_database->name = $user->name; 
$user_database->email = $user->email; 
$user_database->provider = $provider; 
$user_database->provider_id = $user->id; 
$user_database->save(); 
return view('your_view'); 

Надеюсь, это поможет вам. Для более дополнительной проверки помощи official documentation

+0

Я получаю ту же ошибку :( –

0

Я не думаю, что эта линия вызывает проверку проблема $test = DB::table('users')->inse..., если условие

if ($authUser) { 
    dd('here comes the boom.....'); 
    return $authUser; 
} 

Также имейте в виду $authUser является User тип объекта, где, как $test является boolean!

Смежные вопросы