2021-01-08

关联模型


一对一: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. }

  92. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值