【问题标题】:Laravel 5.4 - Create userLaravel 5.4 - 创建用户
【发布时间】:2017-06-29 19:27:00
【问题描述】:

我正在我的网络应用程序中集成 Facebook 登录,但我收到此错误:

SessionGuard.php 第 407 行中的 ErrorException:参数 1 传递给 Illuminate\Auth\SessionGuard::login() 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,字符串给定,调用 /Applications/XAMPP/xamppfiles/htdocs/shop/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php 在第 294 行并定义

我发现问题出在我创建新用户时:

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
]);

效果很好。但我不想在创建用户后停止;我想返回另一个视图。

【问题讨论】:

    标签: php laravel laravel-5.4


    【解决方案1】:

    有几种方法可以在 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

    【讨论】:

      【解决方案2】:

      我认为这行不是问题$test = DB::table('users')->inse... check in if condition

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-26
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        • 2019-01-17
        • 2018-02-16
        • 2023-03-19
        • 2017-11-18
        相关资源
        最近更新 更多