首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中更新相关模型

如何在Laravel中更新相关模型
EN

Stack Overflow用户
提问于 2015-12-27 06:00:39
回答 1查看 245关注 0票数 1

在本文档中,Laravel插入相关模型中没有更新当前相关模型的方法。看一看:两种模型之间的关系

代码语言:javascript
复制
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模型,即如何更新相关模型?

EN

回答 1

Stack Overflow用户

发布于 2015-12-27 07:16:27

由于您没有提供错误消息,我将无法正确地帮助您。但是在同一个文档页上有另一个名为create的方法。上面写着:

除了保存和saveMany方法之外,还可以使用create方法,该方法接受属性数组,创建模型并将其插入数据库。同样,保存和创建之间的区别是,save接受一个完整的雄辩模型实例,而create则接受一个普通的PHP数组:

因此,要回答您的解决方案,您可以这样做:

代码语言:javascript
复制
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);
}

只是附带说明:

您的代码违反了干的的原则。这是因为,除了ifJetUserPass2属性之外,您的方法的JetUserPassJetUserPass2块具有相同的代码。在任何情况下都应避免这种情况。

希望这能帮到你。编码愉快。干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34478012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档