您的位置:首页 > 编程语言 > PHP开发

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

2016-03-27 16:52 579 查看
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里面的写法要大写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: