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(配送区域和地区关联表) 枢纽表
Region.php namespace appindexmodel; use thinkModel; class Region extends Model{//全国地区表 //配送区域表格 public function shippingArea(){ //地区表------配送区域表 return $this->belongsToMany("ShippingArea","tp_area_region","shipping_area_id","region_id"); } } ShippingArea.php namespace appindexmodel; use thinkModel; class ShippingArea extends Model{ public function region(){ return $this->belongsToMany("Region","tp_area_region","region_id","shipping_area_id"); } } //在控制器中使用多对多关联模型 namespace appindexcontroller; use thinkController; use thinkDb; use appindexmodelUsers; use appindexmodelRegion; use appindexmodelShippingArea; class Index extends Controller{ //查询 public function select(){ $regon=Region::get(28558); echo $region->shippingArea[0]->shipping_area_name."===<br/>"; echo $region->shippingArea[1]->shipping_area_name."==="; //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 } //更新 public function update(){ } //删除 public function del1(){ $region=Region::getByName("北京市"); $shippingArea=ShippingArea::get(2); $region->shippingArea()->detach($shippingArea); 删除关联关系 //delete from tp_area_region where region_id=1 and shipping_are_id=2 } public function del2(){ $region=Region::getByName("北京市"); $shippingArea=ShippingArea::get(3); $region->shippingArea()->detach($shippingArea,true); return "配送区域删除成功"; //delete from tp_area_region where region_id=1 and shipping_area_id=3 //delete from tp_shippingArea where shipping_area_id=3; } //插入 public function insert(){ $region=Region::getByName("北京市"); $region->shippingArea()->save(["shipping_area_name"="中国首都"]); //select * from tp_region where name="北京市" limit 1 //insert into tp_shipping_area(shipping_area_name) values("中国首都"); //insert into tp_area_region("regin_id","shipping_area_id") values(1,"1"); } public function saveAll(){ $regin=Region::get(28558); $regin->shippingArea()->saveAll([ ["shipping_area_name"=>"珠三角"], ["shipping_area_name"=>"全国一线城市"] ]) return "配送区域新增成功"; } //把没有关联关系的数据插入到中间表中,形成关联关系 public function relation(){ $region=Region::get(28241); $shippingArea=ShippingArea::getByShippingAreaName("珠三角"); $region->shippingArea()->attach($shippingArea); return "配送区域新增成功"; } public function relation2(){ $region=Region:get(28241); $region->shippingArea()->attache(2); return "配送区域新增成功"; //insert into tp_area_region("region_id",shipping_area_id) values(28241,2); } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 讲解一下ThinkPHP的关联模型
- 下一篇: php比较两个二维数组是否相同,多维数组