多对多 – 在多个关系laravel4的情况下更新数据透视表

栏目: 编程语言 · PHP · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/15621279/update-pivot-table-in-case-of-many-to-many-relation-laravel4

我最近开始使用 Laravel 4.在多个关系的情况下,我在更新数据透视表数据时遇到一些问题.

情况是:

我有两个表:Product,ProductType.

它们之间的关系是多对多的.

我的模特是

class Product extends Eloquent {
    protected $table = 'products';
    protected $primaryKey = 'prd_id';

    public function tags() {
        return $this->belongsToMany('Tag', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
    }
}

class Tag extends Eloquent {
    protected $table = 'tags';
    protected $primaryKey = 'tag_id';
        public function products()
    {
    return $this->belongsToMany('Product', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
    }
}

在将数据插入数据透视表prd_tags时,我做了:

$product->tags()->attach($tag->tagID);

但是现在我想更新此数据透视表中的数据,将数据更新到数据透视表的最佳方法是什么.

比方说,我想删除一些标签并为特定产品添加新标签.

旧问题,但是在2013年11月13日,updateExistingPivot方法被公开用于多对多关系.这还没有在官方文档中.

public void updateExistingPivot(mixed $id, array $attributes, bool $touch)

– 更新表中的现有数据透视记录.

截至2014年2月21日,您必须包含所有三个参数.

在您的情况下,(如果您想更新数据透视字段’foo’),您可以:

$product->tags()->updateExistingPivot($tag->tagID, array('foo' => 'value'), false);

或者,如果要触摸父时间戳,可以将最后一个布尔值false更改为true.

拉请求:

https://github.com/laravel/framework/pull/2711/files

翻译自:https://stackoverflow.com/questions/15621279/update-pivot-table-in-case-of-many-to-many-relation-laravel4


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

曼昆 (N.Gregory Mankiw) / 梁小民、梁砾 / 北京大学出版社 / 2015-5-1 / 128

《经济学原理(第7版):微观经济学分册+宏观经济学分册》是目前国内市场上最受欢迎的引进版经济学教材之一,其最大特点是它的“学生导向”,它更多地强调经济学原理的应用和政策分析,而非经济学模型。第7版在延续该书一贯风格的同时,对第6版作了全面修订和改进。大幅更新了“新闻摘录”“案例研究”等专栏,拓展了章后习题。一起来看看 《经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具