我正在使用Laravel 5.5。我准备好了数据库,我有2个表。 1)users
2)users_auth_tokens
目前在users
表中没有填写任何数据。
所以,我的要求是第一次任何第三个用户调用api获取refreshToken
的Android设备,我将在调用时将数据('auth_token'
,'refresh_token'
,'token_validity'
)插入到users_auth_tokens
表中。有一个字段user_id
,我想插入'0'
第一次api调用,当任何用户登录后调用api,我想用登录的user_id=0
更新相同的记录(这是user_id
)。
但不幸的是,当我试图用user_id=0
插入记录时,它给我的错误如下:
“SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
tracker
.users_auth_tokens
,CONSTRAINTusers_auth_tokens_user_id_foreign
FOREIGN KEY(user_id
)REFERENCESusers
(id
)ON DELETE CASCADE)(SQL:insert intousers_auth_tokens
(auth_token
,validity
,refresh_token
,updated_at
,created_at
)值(ETZEI11RY3D7RQE4XR6OBTNQHC6Q1ND187E5FD3E45281D3385D784C3D89C0697D46DDC,1524135471,b87c88fdcf1eea0a6680620d8da77e4f0ee18b78,2018年4月19日10时52分51秒,2018年4月19日10时52分51秒))”
我知道为什么会出现这个错误,因为user_id
中有外键users_auth_tokens
,而且users
表中没有任何记录!我尝试使用迁移中的默认值0并使其可以为空,但没有运气。
无论如何,我想在该表中插入user_id=0
。我在谷歌搜索一些技巧,但没有人帮助。
我的代码是这样的:
$usersAuthTokens = new UsersAuthTokens;
$usersAuthTokens->auth_token = $authToken;
$usersAuthTokens->validity = $time;
$usersAuthTokens->refresh_token = $newRefreshToken;
$usersAuthTokens->user_id = 0; //error is here..because no record in users table right now
$usersAuthTokens->save();
有人有解决方案吗?任何帮助将不胜感激!
谢谢。
我已经通过保存null
user_id来修复它,但没有使用0
。
我需要在迁移文件中制作->nullable()
,当我保存记录时,我还需要保存null
值!
我试图保存user_id=0
但没有运气,我用null
值修复它!
感谢您的帮助@JonasStaudenmeir!
希望如果他们面临同样的问题,这将有助于未来的任何其他用户!