laravel存在修改,不存在新增数据(支持批量操作)

本文介绍了如何在Laravel中利用Eloquent ORM的多对多关系进行数据更新或新增。通过`BelongsToMany`关联,查询会员卡主表并根据商品ID数组组装相关数据,然后使用`sync`方法实现数据的同步,确保会员卡商品表的正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:两张表,1会员卡主表,2,会员卡商品表,修改会员卡主表如果商品新增或者修改了,需要更新或者新增数据:
使用:
会员卡主表模型多对多关联副表

主表model:

    //数据表名称
    protected $table = 'saas_member_card';


    /**
     * 指示是否自动维护时间戳
     *
     * @var bool
     */
    public $timestamps = false;

    /**
     *  多对多 批量修改新增数据使用
     * @return BelongsToMany
     */
    public function cardProduct():BelongsToMany
    {
        return $this->belongsToMany(SaasMemberCardProduct::class,'saas_member_card_product','card_id','product_id');
    }

业务逻辑:

	// 根据id查询主表
	$card_first = SaasMemberCard::selectById($postData['id'])->first();
	// 组装副表的数据 $free_product_id = [1,3,4,5]
 	$product_data = [];
 	foreach ($free_product_id as $value){
        $product_data[$value] = [
                'vip_type'=>1,
                'custom_id'=>$this->custom_id,
                'create_time'=> time(),
                'product_id'=>$value
            ];
        }
      // 调用model的多对多使用sync更新或者修改数据
      $card_first->cardProduct()->sync($product_data);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值