[英]Laravel 5.4 - Create user
我在我的网络应用程序中集成了Facebook登录,但是我收到了这个错误:
SessionGuard.php第407行中的ErrorException:传递给Illuminate \\ Auth \\ SessionGuard :: login()的参数1必须实现接口Illuminate \\ Contracts \\ Auth \\ Authenticatable,给定字符串,在/ Applications / XAMPP / xamppfiles / htdocs / shop / vendor中调用第294行/laravel/framework/src/Illuminate/Auth/AuthManager.php并定义
我看到问题出在我创建新用户时:
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
]);
它运作良好。 但我不想在创建用户后停止; 我想回到另一个观点。
有几种方法可以在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');
希望它能帮到你。 有关其他帮助,请查看官方文档
我不认为这一行导致问题$test = DB::table('users')->inse...
如果条件检入
if ($authUser) {
dd('here comes the boom.....');
return $authUser;
}
还要记住$authUser
是User
类型对象,其中$test
是boolean
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.