关联模型
数据来源于多个表,我们之前可以通过表与表之间的连接查询来实现
在ThinkPHP这个框架中,通过关联模型来实现(模型与模型之间的关联来实现的)
表与表之间的关系在ThinkPHP中衍生了4中关联关系:
has_one 一对一
belongs_to 一对多
has_many 多对一
many_to_many 多对多
如何实现关联模型
1,如果需要在模型上体现这种关联关系,需要我们的模型继承自 关联模型
2,如果需要定义关联,通过$_link的形式标记
$_link的值为数组,数组的下标为 当前模型关联的模型的名称,
数组的值还是数组,在这个数组中需要表现出来,关联的类型
3,在使用此关联模型查询时,利用relation(true)这个方法,就可以通过关联模型,将与当前模型相关的数据找到
<?php
classUserModel extends RelationModel{
protected $_link=array(
//数组的下标识和当前模型关联的模型名 (表名---首字母大写)
'Archive'=>array(
'mapping_type'=>HAS_ONE,
// 'mapping_name'=>'User',
//外键--在当前这个模型中通过那个字段指向和我关联的
'foreign_key'=>'user_id',
),
'Grp' =>array(
//数组元素用来说明关联模型的类别以及使用哪个字段进行关联
'mapping_type' =>MANY_TO_MANY,
//在这里需要告诉系统使用的第三张表的名称
'relation_table' =>'user_grp',
//还需要告诉系统使用哪个字段进行关联的
'foreign_key' =>'user_id',
//还需要知道第三张表中使用那个字段指向外部表
'relation_foreign_key' =>'grp_id',
),
);
}
?>
public function relate(){
$model=D('User');
//查询id为1的员工
$list=$model->relation(true)->find(1);
var_dump($list);
}