php - Laravel 5.1 登录多社交网络,将 Socialite 插入同名字段

标签 php mysql laravel-5.1 laravel-socialite

我想使用Facebook、Google 和 Twitter 帐户创建登录表单。第一步,我可以使用 Socialite Package 创建它们。第二步,我可以获取用户信息并将其插入MySQL 数据库。我的问题是我第一次使用facebook 帐户成功登录,然后注销了。之后我用 google 帐户登录。错误发生如下:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'users_email_unique' (SQL: insert into `users` (`name`, `updated_at`, `created_at`) values (SrengKhorn, 2015-09-22 02:44:26, 2015-09-22 02:44:26))

这是我的用户表: enter image description here

而且我发现,如果我使用相同的用户名删除以前的记录,我可以使用其中任何一个记录而不会出现错误。你知道如何解决这个问题吗?

最佳答案

嗯。逻辑很简单。您正在尝试插入一封空白电子邮件。是的,电子邮件是一个独特的领域,这并不奇怪。空白电子邮件无法插入,因为它正在重复。因此,只需在尝试登录用户时添加电子邮件即可。您可以使用 $user->email。只需存储该电子邮件即可。再次登录时,只需检查具有相同电子邮件地址的用户是否已存在。如果没有,只需输入值,否则登录用户。

关于php - Laravel 5.1 登录多社交网络,将 Socialite 插入同名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707754/

相关文章:

php - 如何格式化 GROUP BY 查询的输出?

使用 Goutte 抓取时 PHP 返回数组

mysql - Laravel 查询生成器 - 从 MySQL 获取当前时间

php - 使用mysql(数据太多)获取不同用户事件的统计信息

phpspec - 方法返回对象而不是字符串

PHPUnit Mock 稍后改变期望

php - 选择使用 join 和 group by 形成的表中具有最新日期的行

mysql - rake 数据库 :migrate mysql error

MySQL - 根据不同条件忽略某些行

php - Laravel 使用 Eloquent 多对多关系