在本文档中,Laravel插入相关模型中没有更新当前相关模型的方法。看一看:两种模型之间的关系
private function UserToken($token,$expire,$user_id){
if($JetUserPass=JetUserPass::find($user_id)->token){
$JetT = new JetTokens(['id_token' =>$token,'expires_on'=>$expire]);
$JetUserPass2=JetUserPass::find($user_id);
$JetUserPass2->token()->save($JetT);//NOT WORKING
}else{
$JetT = new JetTokens(['id_token' =>$token,'expires_on'=>$expire]);
$JetUserPass=JetUserPass::find($user_id);
$JetUserPass->token()->save($JetT);
}
}可能的错误:违反完整性..。
在if块中,它检查用户是否存在令牌,如果为true,它将更新现有的令牌,否则将创建新的令牌。我想从JetUserPass模型中更新JetTokens模型,即如何更新相关模型?
发布于 2015-12-27 07:16:27
由于您没有提供错误消息,我将无法正确地帮助您。但是在同一个文档页上有另一个名为create的方法。上面写着:
除了保存和saveMany方法之外,还可以使用create方法,该方法接受属性数组,创建模型并将其插入数据库。同样,保存和创建之间的区别是,save接受一个完整的雄辩模型实例,而create则接受一个普通的PHP数组:
因此,要回答您的解决方案,您可以这样做:
private function UserToken($token, $expire, $user_id)
{
$jetUserPass = JetUserPass::find($user_id);
$insertValues = [
'id_token' => $token,
'expires_on' => $expire
];
// Since you have same code, I have replaced it
// in a single line following the principle of DRY.
// Read the link below.
$jetUserPass->token()->create($insertValues);
}只是附带说明:
您的代码违反了干的的原则。这是因为,除了if和JetUserPass2属性之外,您的方法的JetUserPass和JetUserPass2块具有相同的代码。在任何情况下都应避免这种情况。
希望这能帮到你。编码愉快。干杯。
https://stackoverflow.com/questions/34478012
复制相似问题