23、ThinkPhP5:关联-五(多对多)

1、同时添加多个配送区域

        //同时添加多个配送区域
        $region = Region::getByName('北京市');
        $region->shippingArea()->saveAll([
            ['shipping_area_name' => '珠三角'],
            ['shipping_area_name' => '全国一线城市'],
        ]);
        return '设置城功!';
        //SELECT * FROM `tp_region` WHERE `name` = '北京市' LIMIT 1
        //INSERT INTO `tp_shipping_area` (`shipping_area_name`) VALUES ('珠三角') 
        //REPLACE INTO `tp_area_region` (`region_id` , `shipping_area_id`) VALUES (1 , 12) 
        //INSERT INTO `tp_shipping_area` (`shipping_area_name`) VALUES ('全国一线城市')
        //REPLACE INTO `tp_area_region` (`region_id` , `shipping_area_id`) VALUES (1 , 13)

2、给一个地区,添加一个现有的配送区域

        //给一个地区,添加一个现有的配送区域
        $region = Region::getByName('上海市');
        $shippingArea = ShippingArea::getByShippingAreaName('珠三角');
        $region->shippingArea()->attach($shippingArea);//使用attach方法增加中间表插入数据
        //$region->shippingArea()->attach(63); //直接写配送区域的ID也是可以的。
        return '配送区域新增成功!';
        //SELECT * FROM `tp_region` WHERE `name` = '上海市' LIMIT 1 
        //SELECT * FROM `tp_shipping_area` WHERE `shipping_area_name` = '珠三角' LIMIT 1
        //REPLACE INTO `tp_area_region` (`region_id` , `shipping_area_id`) VALUES (2 , 9) 

3、关联删除 删除关系(中间表)

        $region = Region::getByName('北京市');
        $shippingArea = ShippingArea::get(9);
        $region->shippingArea()->detach($shippingArea);
        //SELECT * FROM `tp_region` WHERE `name` = '北京市' LIMIT 1
        //SELECT * FROM `tp_shipping_area` WHERE `shipping_area_id` = 9 LIMIT 1 
        //DELETE FROM `tp_area_region` WHERE `region_id` = 1 AND `shipping_area_id` = 9 

4、删除枢纽表的同时删除关联模型(关系、中间表)

        $region = Region::getByName('北京市');
        $shippingArea = ShippingArea::get(10);
        $region->shippingArea()->detach($shippingArea,true);
        //SELECT * FROM `tp_region` WHERE `name` = '北京市' LIMIT 1
        //SELECT * FROM `tp_shipping_area` WHERE `shipping_area_id` = 10 LIMIT 1 
        //DELETE FROM `tp_area_region` WHERE `region_id` = 1 AND `shipping_area_id` = 10
        //DELETE FROM `tp_shipping_area` WHERE `shipping_area_id` = 10 

5、关联模型的读取 查找到北京的配送区域

        $region = Region::get(1); //北京市
        echo $region->shippingArea[0]->shipping_area_name.'<br>';
        echo $region->shippingArea[1]->shipping_area_name;
        //SELECT * FROM `tp_region` WHERE `id` = 1 LIMIT 1 
        //SELECT `tp_shipping_area`.*,pivot.shipping_area_id AS pivot__shipping_area_id,pivot.region_id AS pivot__region_id FROM `tp_shipping_area` INNER JOIN `tp_area_region` `pivot` ON `pivot`.`shipping_area_id`=`tp_shipping_area`.`shipping_area_id` WHERE `pivot`.`region_id` = 1
        //中国首都
        //中国一经城市

        //关联模型的读取 查找到北京的配送区域 先关联后查寻
        $region = Region::get(1,'shippingArea'); //北京市
        echo $region->shippingArea[0]->shipping_area_name.'<br>';
        echo $region->shippingArea[1]->shipping_area_name;
        // SELECT * FROM `tp_region` WHERE `id` = 1 LIMIT 1 
        //SELECT `tp_shipping_area`.*,pivot.shipping_area_id AS pivot__shipping_area_id,pivot.region_id AS pivot__region_id FROM `tp_shipping_area` INNER JOIN `tp_area_region` `pivot` ON `pivot`.`shipping_area_id`=`tp_shipping_area`.`shipping_area_id` WHERE `pivot`.`region_id` = 1 
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值