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

TP框架的关联模型的使用

创建时间:2013-05-09 投稿人: 浏览次数:3115

关联模型的使用

在数据表中一般会存在三种关联关系:

通常我们所说的关联关系包括下面三种:

²  一对一关联  :ONE_TO_ONE,包括HAS_ONE

²  一对多关联  :ONE_TO_MANY,包括HAS_MANY 和 BELONGS_TO

²  多对多关联  :MANY_TO_MANY

现在有数据库

User(储存ID,NAME),

Archive(储存每个人的详细信息),

Dept(个人所属的部门),

Grp(纯粹个人所属的项目组),

Money(个人使用的银行卡)

User_group(用于连接user表和Grp表)

一对一指的是一条数据对应一条数据。例如,user表和Archive的关联关系。一个人对应一条详细信息

一对多(多对一):一条记录对应多条记录。例如:user和Dept的关联关系(多人对应一个部门),user和Money的关联关系(一个人对应多张银行卡)

多对多:多条记录对应多条记录。例如:user和grp的关联关系(每个人可以属于多个组,每个组有多个人)

在TP框架中使用关联模型:

首先要有一个自定义模型。要继承RelationModel类:

Class UserModel extends RelationModel

之后就要定义关联模型:创建类的属性:$_link=array()在$_link数组中应该包含每个在该模型中需要的关联关系,每一个关联关系都应该是一个数组,数组中储存关联关系的参数

关联模型的名称要和关联表的表名相同

例如:

protected $_link = array(

"Archives"=>array(

"mapping_type" =>HAS_ONE,   //mapping_type:关联类型

 //foreign_key:关联表的外键(这里是Archives表的user_id字段)

"foreign_key"=>"user_id"

)

);

多对一只要修改mapping_type为HAS_MANY或BLONGS_TO

多对多和一对一的区别是需要更多地参数:

"Grp"=>array(

"mapping_type"=>MANY_TO_MANY,

"relation_table"=>"user_group", //relation_table是中间约束和关联的表名

"foreign_key"=>"user_id", //此表类的对应中间表的外键

"relation_foreign_key"=>"group_id" //关联表的对应中间表的外键

)

在控制器中调用关联模型:

$model=D("User");

var_dump($model->relation("Archives")->find(1));

Relation带参数时,参数为要关联的关联名;

不带参数时代表输出所有关联模型

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