gpt4 book ai didi

Laravel 社交名流 $user->getId()?

转载 作者:行者123 更新时间:2023-12-02 13:42:44 24 4
gpt4 key购买 nike

我不确定这是否是导致我的问题的真正原因,但也许有人会知道。当我使用 Laravel Socialite 并执行以下操作时:

$social_user = Socialite::driver($provider)->user();

然后在我的代码中的其他地方执行此操作:

if ($authUser = User::where('provider_id', $social_user->id)) 
return $authUser;

出于某种疯狂的原因,我收到如下错误:

传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须实现接口(interface) Illuminate\Contracts\Auth\Authenticatable,给出 Illuminate\Database\Eloquent\Builder 的实例

但是,如果我这样做,我不会收到错误:

if($authUser = User::where('email', $social_user->email)->first())
return $authUser;

我像这样登录该用户:

Auth::login($authUser, true);

有人知道为什么吗?我使用的是 Laravel 5.2

最佳答案

错误消息实际上是 self 解释的。当您执行 User::where('provider_id', $social_user->id) 时,您最终会得到实现 Illuminate\Database\Eloquent\Builder 的 builder 对象 。您可以对其调用 ->get() 来获取结果集合(实现 Illuminate\Contracts\Auth\Authenticatable 的对象集合> 在你的情况下,这样你就可以迭代它们),或者像你一样,你可以使用 ->first() 获得第一个匹配(一个实现 Illuminate\Contracts\Auth\Authenticatable)。您可以在 Eloquent documentation 中阅读更多内容.

要点是,直到您调用 ->get()->first() 您正在使用 构建器对象。实际上还有 ->find() 方法,用于通过 pk 检索记录,您不能使用它来通过约束(where)搜索记录,但它还返回模型对象。

关于Laravel 社交名流 $user->getId()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com