拔头发的时间。
我已经实现了对Laravel Socialite的回调。它针对 Twitter 用户 ID 运行User::where
,但始终返回 null,尽管数据库中有一条记录匹配。
因此,它总是尝试创建新用户,从而导致此类错误:
QueryException in Connection.php line 673:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry...
下面是回调函数。 $twitterUser
是来自Socialite的传入用户记录。我尝试在函数中显式使用 'App'User'
,但无济于事。
private function findOrCreateUser( $twitterUser )
{
$user = User::where( 'twitter_id', $twitterUser->id )->first();
if ($user)
{
return $user;
}
return User::create([
'name' => $twitterUser->name,
'handle' => $twitterUser->nickname,
'twitter_id' => $twitterUser->id,
'avatar' => $twitterUser->avatar_original
]);
}
如果我在应用程序的其他位置运行代码,用户显示正常,如果我尝试php artisan tinker
后跟'App'User::where('twitter_id', 123456789)->first()
,我会得到一个结果:
=> App'User {#663
id: 3,
name: "Steve Jones",
handle: "SteveJonesGtr",
twitter_id: 123456789,
avatar: "http://pbs.twimg.com/profile_images/whatever/bC0RLl-3.jpeg",
created_at: "2016-04-20 11:41:39",
updated_at: "2016-04-20 11:41:39",
}
编辑:如果我将where
子句更改为此子句,它可以工作:
$user = User::where( 'handle', $twitterUser->nickname )->first();
但我不明白为什么它不会为此返回结果:
$user = User::where( 'twitter_id', $twitterUser->id )->first();
有什么想法吗?
您正在搜索12345678而不是123456789那是您的问题。 你最后错过了 9