Thinkphp 下的关联模型的使用
来源:互联网 发布:淘宝iphone官换机 骗局 编辑:程序博客网 时间:2024/05/07 04:29
通常我们所说的关联关系包括下面三种:
☆ 一对一关联:ONE_TO_ONE,包括HAS_ONE和BELONGS_TO
☆ 一对多关联:ONE_TO_MANY,包括HAS_MANY和BELONGS_TO
☆ 多对多关联:MANY_TO_MANY
关联关系必然有一个参照表,例如:
有一个用户注册表xp_user和一个用户信息表xp_info
xp_user有用户的账号、密码
xp_info记录用户的基本信息 有标题、信息
一、我们首先来说说HAS_ONE关联
首先要建立一个UserModel模型
UserModel模型:
<?php
class UserModelextends RelationModel{//这地方要继承RelationModel
protected $_link=array(//所有的关联定义都统一记录在模型类的$_link里面
'Info'=>array(//关联的表名
'mapping_type' =>HAS_ONE,//关联类型
'class_mame' =>'Info',//需要关联的模型类名
'mapping_name'=>'Info',//关联的映射名称,用于获取数据用
'foreign_key' =>'uid',//关联的外键名称
//'mapping_fields'=>'uid,title,info', //关联要查询的字段
'as_fields' =>'uid,title,info:message',//直接把关联的字段值映射成数据对象中的某个字段
),
);
}
?>
class UserModelextends RelationModel{//这地方要继承RelationModel
protected $_link=array(//所有的关联定义都统一记录在模型类的$_link里面
'Info'=>array(//关联的表名
'mapping_type' =>HAS_ONE,//关联类型
'class_mame' =>'Info',//需要关联的模型类名
'mapping_name'=>'Info',//关联的映射名称,用于获取数据用
'foreign_key' =>'uid',//关联的外键名称
//'mapping_fields'=>'uid,title,info', //关联要查询的字段
'as_fields' =>'uid,title,info:message',//直接把关联的字段值映射成数据对象中的某个字段
),
);
}
?>
UserAction控制器:
<?php
class UserActionextends Action{
public functionindex(){
$user=D('User');
$list=$user->relation(true)->find();//由于性能问题,新版本取消了自动关联查询机制,而统一使用relation方法进行关联操作
dump($list);
}
}
?>
class UserActionextends Action{
public functionindex(){
$user=D('User');
$list=$user->relation(true)->find();//由于性能问题,新版本取消了自动关联查询机制,而统一使用relation方法进行关联操作
dump($list);
}
}
?>
输入结果如下:
二、一对多关联HAS_MANY
user表仍是一条数据
info表增加一条数据
UserModel模型:
<?php
class UserModelextends RelationModel{//这地方要继承RelationModel
protected $_link=array(//所有的关联定义都统一记录在模型类的$_link里面
'Info'=>array(//关联的表名
'mapping_type' =>HAS_MANY,//关联类型 一对多关联
'class_mame' =>'Info',//需要关联的模型类名
'mapping_name'=>'Info',//关联的映射名称,用于获取数据用
'foreign_key' =>'uid',//关联的外键名称
//'mapping_fields'=>'uid,title,info', //关联要查询的字段
'as_fields' =>'uid,title,info:message',//直接把关联的字段值映射成数据对象中的某个字段
//一对多关联这地方增加了几个参数
//mapping_limit 关联要返回的记录条数
//mapping_order 关联查询的顺序
),
);
}
?>
class UserModelextends RelationModel{//这地方要继承RelationModel
protected $_link=array(//所有的关联定义都统一记录在模型类的$_link里面
'Info'=>array(//关联的表名
'mapping_type' =>HAS_MANY,//关联类型 一对多关联
'class_mame' =>'Info',//需要关联的模型类名
'mapping_name'=>'Info',//关联的映射名称,用于获取数据用
'foreign_key' =>'uid',//关联的外键名称
//'mapping_fields'=>'uid,title,info', //关联要查询的字段
'as_fields' =>'uid,title,info:message',//直接把关联的字段值映射成数据对象中的某个字段
//一对多关联这地方增加了几个参数
//mapping_limit 关联要返回的记录条数
//mapping_order 关联查询的顺序
),
);
}
?>
UserAction控制器:
<?php
class UserActionextends Action{
public functionindex(){
$user=D('User');
$list=$user->relation(true)->select();
dump($list);
}
}
?>
class UserActionextends Action{
public functionindex(){
$user=D('User');
$list=$user->relation(true)->select();
dump($list);
}
}
?>
输出结果:
一对一和一对多 基本一样、只要会一对一 一对多很容易
三、关联操作 CURD
1.以一对多模型为例,向数据库插入数据
UserAction.class.php
'title111111','info'=>'info11111111'),//这里的info是字段
array('title'=>'title222222222','info'=>'info222222222'),
);
$user->relation(true)->add($data);
}
}
?>
array('title'=>'title222222222','info'=>'info222222222'),
);
$user->relation(true)->add($data);
}
}
?>
运行结果:
2.修改这条数据
UserAction.class.php
<?php
class UserActionextends Action{
public functionindex(){
$user=D('User');
$data['username']='demo';
$data['userpwd']='mima';
$data['Info']=array(
array('id'=>'5','title'=>'demo111111','info'=>'demo111111'),//这地方跟add不同 需要加修改的ID
array('id'=>'6','title'=>'demo2222222','info'=>'demo2222222'),
);
$user->relation(true)->where('id=16')->save($data);
}
}
?>
class UserActionextends Action{
public functionindex(){
$user=D('User');
$data['username']='demo';
$data['userpwd']='mima';
$data['Info']=array(
array('id'=>'5','title'=>'demo111111','info'=>'demo111111'),//这地方跟add不同 需要加修改的ID
array('id'=>'6','title'=>'demo2222222','info'=>'demo2222222'),
);
$user->relation(true)->where('id=16')->save($data);
}
}
?>
运行结果:
3.删除这条数据
<?php
class UserActionextends Action{
public functionindex(){
$user=D('User');
$user->relation(true)->delete(16);
}
}
?>
class UserActionextends Action{
public functionindex(){
$user=D('User');
$user->relation(true)->delete(16);
}
}
?>
0 0
- Thinkphp 下的关联模型的使用
- ThinkPHP中坑爹的关联模型
- 关于thinkphp中关联模型的简单使用
- thinkphp 的关联模型 CURD操作
- 关于thinkphp关联模型的HAS_ONE
- 关于thinkphp关联模型的效率问题
- 讲解一下ThinkPHP的关联模型
- thinkphp关联模型具体使用
- 关于thinkphp的几个问题:css路径问题,关联模型,
- Thinkphp 模型->关联模型
- thinkphp 使用关联模型 读取博文
- ThinkPHP关联模型基本使用教程
- ThinkPHP视图/关联模型使用记录
- ThinkPhp的介绍与模型的使用
- ThinkPHP的输出和模型使用
- 关于thinkphp模型的扩展使用!
- ThinkPHP的输出和模型使用
- thinkphp下ueditor的使用
- ibatis xml特别的用法
- Android系统权限和root权限
- RecyclerView的基本用法 (三)
- metero 常用命令 合集
- java不用循环语句打印数组元素
- Thinkphp 下的关联模型的使用
- 分享一些优秀有趣的博客
- 自己对多线程的一点思考
- win10问题集——打不开左下角
- 绕过身份检测,破解Android SU(android静默安装)
- #if defined 与 #ifdef
- PHP写一个函数,算出两个文件的相对路径
- 1010. 一元多项式求导 (25)
- 鸡尾酒要左手拿着喝