繁体   English   中英

Laravel 5.4 - 创建用户

[英]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;
}

还要记住$authUserUser类型对象,其中$testboolean

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM