• 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 appindexmodel;  
      4. use thinkModel;  
      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 appindexmodel;  
      17. use thinkModel;  
      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 appindexcontroller;  
      30. use thinkController;  
      31. use thinkDb;  
      32. use appindexmodelUsers;  
      33. use appindexmodelRegion;  
      34. use appindexmodelShippingArea;  
      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.     }  
  • 相关阅读:
    SciTE 快捷键
    MySQL数据库性能优化
    常用的正则表达式全面总结
    PHP中的Memcache的应用
    经典数学题:态度决定一切
    PHP Socket基础
    由浅入深探究mysql索引结构原理、性能分析与优化
    深入理解HTTP协议
    PHP会话控制之Session介绍原理
    PHP会话控制之Cookie使用例子
  • 原文地址:https://www.cnblogs.com/caicaizi/p/8310626.html
Copyright © 2020-2023  润新知