duanji7881 2018-07-14 23:37
浏览 63
已采纳

在数据透视表中以eloquent保存数据

I am trying to achieve a simple insert into a pivot table but I cannot understand the principle why it does not work.

I have a Languages table which contains an id, name and code populated with languages. And I have a users table populated with users. The middle table is users_languages which has the columns user_id and and language_id.

My request has something like this

{
   "languages": [1, 2] -> language ids
}

My languages method into the Users model looks like this:

public function language() : BelongsToMany
{
    return $this
        ->belongsToMany(Language::class, 'users_languages')
        ->withPivot('user_id', 'language_id');
}

I am trying to add the languages like this:

public function setLanguages(array $languages) : self
{
    $this->language()->delete();
    $this->language()->createMany($languages);

    return $this;
}

The result I get is actually the its trying to create a new entry into the Languages table instead of just making a connection between the user_id and language_id.

I was looking through the documentation and some articles how this works but I none of the solutions I found worked. I am using Lumen 5.5 for my project. Thank you in advance for your help!

  • 写回答

1条回答 默认 最新

  • dongliao6777 2018-07-15 00:22
    关注

    Use attach():

    public function setLanguages(array $languages) : self
    {
        $this->language()->attach($languages);
    
        return $this;
    }
    

    Use sync() if you want to remove the existing pivot entries.

    public function setLanguages(array $languages) : self
    {
        $this->language()->sync($languages);
    
        return $this;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C语言设计一个简单的自动换档程序
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。