当前位置: 首页 > 知识库问答 >
问题:

关于编辑更新透视表-laravel

强志学
2023-03-14

我有表问题标签和透视表question_tagquestion_tag表只有两个字段question_idtag_id

当我添加一个问题时,它还会将相应的值插入透视表。

假设我更改表单中的问题标记并保存,它应该更新透视表的值。如何更新透视表?我是拉威尔的新手。我试过类似的东西

$question->tags()->updateExistingPivot($tag_id, array('any attribute'=>$value));

但在我的例子中,pivot表中并没有额外的属性

问题模型

public function tags()
    {
        return $this->belongsToMany('App\Tag');
    }

标签模型

public function questions()
{
    return $this->belongsToMany('App\Question');
}

共有3个答案

赖俊
2023-03-14

试试这个

$question-

$question-

聂迪
2023-03-14

试试这个:

$question->tags()->sync([$tag_id]);
关苗宣
2023-03-14

试试这个

$question->tags()->updateExistingPivot($question->id, ['tag_id' => $newTag->id]);

第一个价值就是你要匹配什么。如果你想匹配问题,那么它应该是问题ID。第二个参数是要更新的列,所以给它传递一个带有新标签的数组就可以了。我写了一个测试,它工作得很好。

/** @test */
public function it_can_update_the_pivot_table()
{
    // Create a Tag
    $tag      = factory(Tag::Class)->create();

    // Create a Question
    $question = factory(Question::Class)->create();

    // Create a pivot table record
    DB::table('question_tag')->insert(['question_id' => $question->id, 'tag_id' => $tag->id]);

    // Assert that there is a pivot table record before we attempt to change it
    $this->assertNotNull(DB::table('question_tag')->where([
        ['question_id', $question->id],
        ['tag_id', $tag->id],
    ]));

    // Attempt to change the with the tag id of the tag we created above.
    $question->tags()->updateExistingPivot($tag->id, ['tag_id' => 2]);

    // Query all pivot table records with the question id
    $new = DB::table('question_tag')->where(
        'question_id', $question->id
    )->first();

    // assert that the pivot record was updated
    $this->assertEquals(2, $new->tag_id);
}
 类似资料:
  • 您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st

  • 在上一篇文章中,已经了解基本编辑,了解Vim的其他一些编辑功能。 在本节中,将讨论以下主体内容 - 缓冲 交换文件 剪切,复制,删除,粘贴操作 撤消和重做操作 缓冲 缓冲区是Vim使用的临时内存。 当在编辑器中打开文件时,Vim从磁盘驱动器加载其内容。 每当编辑文件时,这些内容都存储在内存(RAM)中,实际上是从缓冲区编辑文件。 当完成编辑并保存文件,那时只将缓冲区内容传输到适当的文件。 交换 交

  • 我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪

  • cart_items(id,user_id,product_id,store_id,quantity) 我的CartItem模型就像 当我调用时,我希望它返回产品数据返回匹配的数据透视表。

  • 编辑视频列表 通过该接口可以实现对视频列表的更新,地址为: http://spark.bokecc.com/api/playlist/update 需要传递以下参数: 参数 说明 playlistid 视频列表的id,不可为空 userid 用户id,不可为空 name 视频列表修改后的名称 videoid 视频id,⽤”,”分割 注:“,”为英⽂半⻆。 注:最⼤100个,videoid状态必须为

  • 我有一个带有单元格编辑功能的数据表,我想通过应用一个不同样式的类来更新数据表以显示修改后的记录。 以下是我的问题: 如果在激发onCellEdit事件时未更新数据表,则记录已正确更新,但无法看到已修改行的applyed style类。 如果在onCellEdit事件激发时更新数据表,并使用return键更新值,则一切正常,并且可以看到修改行的应用样式类。 如果我在单元格编辑事件触发时更新数据表,并