牛骨文教育服务平台(让学习变的简单)
博文笔记

tp5模型笔记---多对多

创建时间:2017-10-07 投稿人: 浏览次数:173

关联模型


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


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。