我用的是拉威尔5.5。我已经准备好了我的数据库和两个表。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
,约束 users_auth_tokens_user_id_foreign
外键( user_id
)参考文献 users
( id
)删除时(sql:insert-into) users_auth_tokens
( auth_token
, validity
, refresh_token
, updated_at
, created_at
)值(etzei11ry3d7rqe4xr6obtnqhc6q1nd187e5fd3e45281d3385d784c3d89c0697d46ddc,1524135471,b87c88fdcf1ee0a6680620d8da77e4f0ee18b78,2018-04-19 10:52:51,2018-04-19 10:52:51))
我知道为什么会发生这个错误,因为有外键 user_id
在 users_auth_tokens
而且里面没有任何记录 users
现在就坐!我尝试过使用迁移中的默认0值,并使其也可以为null,但没有成功。
不管怎样,我想插入 user_id=0
在那张table上。我在谷歌上搜索了一些技巧,但没人帮忙。
我的代码是这样的:
$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();
有人能解决这个问题吗?任何帮助都将不胜感激!!
谢谢。
1条答案
按热度按时间z18hc3ub1#
我已经用储蓄解决了
null
用户id,但不是0
.我需要做点什么
->nullable()
在迁移文件中,当我保存记录时,我还需要保存null
价值观!我想救你
user_id=0
但是运气不好,我已经把它修好了null
价值观!谢谢你的帮助@jonasstaudenmeir!
希望这将有助于任何其他用户在未来,如果他们面临同样的问题!