thinkphp多对多关联中间表relation_table表前缀支持变量填写的方法

thinkphp多对多关联MANY_TO_MANY中间表relation_table表前缀支持变量填写的方法

1、大家都知道,如果在多对多关联时relation_table中间表写死,那将无法满足cms安装时候支持表前缀自定义。

thinkphp3.2.2开始,relation_table定义支持简化写法,例如:
 'relation_table'=>'__USER_GROUP__'


2、用法实例:

		protected $_link = array(
				'News_Attr' => array( //dept可以随便取名字
						'mapping_type'      =>  self::MANY_TO_MANY,//这里跟3.1有点不一样
						'class_name'        =>  'News',//要关联的模型类名(即表名)
						'mapping_name'      =>  'child',//关联的映射名称,用于获取数据用(附表的关联字段)
						'foreign_key'       =>  'attr_id',//关联的外键Id(主表的关联字段)
						'relation_foreign_key'  =>  'news_id',//关联的外键Id(主表的关联字段)
						'relation_table'    =>  'tuzi_attr_news' //此处应显式定义中间表名称,且不能使用C函数读取表前缀
			),
		);
以上关联查询代码可以用下面代替,实现相同的效果:

		protected $_link = array(
				'News_Attr' => array( //dept可以随便取名字
						'mapping_type'      =>  self::MANY_TO_MANY,//这里跟3.1有点不一样
						'class_name'        =>  'News',//要关联的模型类名(即表名)
						'mapping_name'      =>  'child',//关联的映射名称,用于获取数据用(附表的关联字段)
						'foreign_key'       =>  'attr_id',//关联的外键Id(主表的关联字段)
						'relation_foreign_key'  =>  'news_id',//关联的外键Id(主表的关联字段)
						'relation_table'    =>  '__ATTR_NEWS__' //此处应显式定义中间表名称,且不能使用C函数读取表前缀
			),
		);


注意:relation_table里面的写法要大写。


猜你喜欢

转载自blog.csdn.net/yeyinshi/article/details/50992483