tp5模型笔记---多对多

关联模型


一对一:HAS_ONE  以及对应的BELONEGS_TO
一对多:HAS_MANY 以及相对的BELONGS_TO
多对多:BELONGS_TO_MANY


步骤:


第一:创建Users模型
第二:创建Comment模型
第三:在Users模型添加方法
第四:在comment模型添加方法
第五:测试




多对多关联表


truncate table tp_shipping_area
truncate table tp_area_region


select * from tp_shipping_area
select * from tp_area_region


1.清空tp_shipping_area表和tp_area_region表进行测试
2.创建Region模型和ShippingArea模型
3.设置Region模型的关联方法指定关联表
4.设置ShippingArea模型的关联方法指定关联表




三张表 tp_region(地区表)   tp_shipping_area(配送区域表)   tp_area_region(配送区域和地区关联表) 枢纽表




    1. Region.php  
    2.   
    3. namespace app\index\model;  
    4. use think\Model;  
    5. class Region extends Model{//全国地区表  
    6.     //配送区域表格  
    7.     public function shippingArea(){  
    8.         //地区表------配送区域表  
    9.         return $this->belongsToMany('ShippingArea','tp_area_region','shipping_area_id','region_id');  
    10.     }  
    11. }  
    12.   
    13.   
    14. ShippingArea.php  
    15.   
    16. namespace app\index\model;  
    17. use think\Model;  
    18. class ShippingArea extends Model{  
    19.     public function region(){  
    20.         return $this->belongsToMany('Region','tp_area_region','region_id','shipping_area_id');  
    21.     }  
    22. }  
    23.   
    24.   
    25.   
    26. //在控制器中使用多对多关联模型  
    27.   
    28.   
    29. namespace app\index\controller;  
    30. use think\Controller;  
    31. use think\Db;  
    32. use app\index\model\Users;  
    33. use app\index\model\Region;  
    34. use app\index\model\ShippingArea;  
    35.   
    36. class Index extends Controller{  
    37.     //查询  
    38.     public function select(){  
    39.         $regon=Region::get(28558);  
    40.         echo $region->shippingArea[0]->shipping_area_name.'===<br/>';  
    41.         echo $region->shippingArea[1]->shipping_area_name.'===';  
    42.         //select tp_shippingArea.*,pivot.shipping_area_idaspivot_shipping_area_id,pivot.region_id AS pivot_region_id from tp_shipping_area Inner join tp_area_region pivot onpivot.shipping_area_id=tp_shipping_area.shipping_area_id where pivot.region_id=28558  
    43.     }  
    44.     //更新  
    45.     public function update(){  
    46.           
    47.     }  
    48.     //删除  
    49.     public function del1(){  
    50.         $region=Region::getByName('北京市');  
    51.         $shippingArea=ShippingArea::get(2);  
    52.         $region->shippingArea()->detach($shippingArea); 删除关联关系  
    53.         //delete from tp_area_region where region_id=1 and shipping_are_id=2     
    54.     }  
    55.     public function del2(){  
    56.         $region=Region::getByName('北京市');  
    57.         $shippingArea=ShippingArea::get(3);  
    58.         $region->shippingArea()->detach($shippingArea,true);  
    59.         return '配送区域删除成功';  
    60.         //delete from tp_area_region where region_id=1 and shipping_area_id=3  
    61.         //delete from tp_shippingArea where shipping_area_id=3;  
    62.     }  
    63.     //插入  
    64.     public function insert(){  
    65.         $region=Region::getByName('北京市');  
    66.         $region->shippingArea()->save(['shipping_area_name'='中国首都']);  
    67.         //select * from tp_region where name='北京市' limit 1  
    68.         //insert into tp_shipping_area(shipping_area_name) values('中国首都');  
    69.         //insert into tp_area_region('regin_id','shipping_area_id') values(1,'1');  
    70.     }  
    71.     public function saveAll(){  
    72.         $regin=Region::get(28558);  
    73.         $regin->shippingArea()->saveAll([  
    74.             ['shipping_area_name'=>'珠三角'],  
    75.             ['shipping_area_name'=>'全国一线城市']  
    76.         ])  
    77.         return '配送区域新增成功';  
    78.     }  
    79.     //把没有关联关系的数据插入到中间表中,形成关联关系  
    80.     public function relation(){  
    81.         $region=Region::get(28241);   
    82.         $shippingArea=ShippingArea::getByShippingAreaName('珠三角');  
    83.         $region->shippingArea()->attach($shippingArea);  
    84.         return '配送区域新增成功';  
    85.     }  
    86.     public function relation2(){  
    87.         $region=Region:get(28241);  
    88.         $region->shippingArea()->attache(2);  
    89.         return '配送区域新增成功';  
    90.         //insert into tp_area_region('region_id',shipping_area_id) values(28241,2);  
    91.     }  
posted on 2018-01-18 15:50  caigan  阅读(452)  评论(0编辑  收藏  举报