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

☆ 一对一关联: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模型:

<?phpclassUserModelextendsRelationModel {//这地方要继承RelationModelprotected$_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控制器:

<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$list=$user->relation(true)->find();//由于性能问题,新版本取消了自动关联查询机制,而统一使用relation方法进行关联操作dump($list);}}?>

输入结果如下:

二、一对多关联HAS_MANY

user表仍是一条数据

info表增加一条数据

UserModel模型:

<?phpclassUserModelextendsRelationModel {//这地方要继承RelationModelprotected$_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控制器:

<?phpclassUserActionextendsAction {publicfunctionindex(){$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);

}

}?>

运行结果:

2.修改这条数据

UserAction.class.php

<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$data['username']='demo';$data['userpwd']='mima';$data['Info']=array(array('id'=>'5','title'=>'demo111111','info'=>'demo111111'),//这地方跟add不同 需要加修改的IDarray('id'=>'6','title'=>'demo2222222','info'=>'demo2222222'),);$user->relation(true)->where('id=16')->save($data);}}?>

运行结果:

3.删除这条数据

<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$user->relation(true)->delete(16);}}?>

运行结果:

好了,关联操作到此结束

think php 关联模型,ThinkPHP 关联模型使用图解相关推荐

  1. ThinkPHP关联模型详解

    在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...

  2. thinkphp通过模型查询mysql_thinkPHP视图模型详解,把mysql表关联简单化!

    学过sql的人都知道有表左关联,右关联,但是sql语句要写很多,非常容易出错,而ThinkPHP的视图模型则简单化很多了.还发现个问题,貌似ThinkPHP手册写的很多东西都不是很完善,很多人看了都不 ...

  3. thinkphp 关联模型配置代码

    原文:thinkphp 关联模型配置代码 <?php /*** 公司与部门关联模型*/ class CompanyRelationModel extends RelationModel{//主表 ...

  4. Django框架(14.Django中模型类的关系,以及模型类关联查询)

    Django中模型类的关系,以及模型类关联查询 1.模型类关系 1.1 一对多关系 1.2多对多关系 1.3 一对一关系 1.4 一对多举例: 1.5 多对多举例: 1.6 一对一举例: 2.关联查询 ...

  5. 二十八、PHP框架Laravel学习笔记——模型的关联查询

    二.关联查询 前几篇博文,了解了三种基础的关联模型,并简单的进行查询: 本节课,我们详细的了解更多的查询方案: //下面两种查询是一样的: $books = User::find(19)->bo ...

  6. matlab小船渡河物理模型,【物理】小船渡河模型及关联速度问题

    原标题:[物理]小船渡河模型及关联速度问题 在运动的合成与分解中,如何判断物体的合运动和分运动是首要问题,判断合运动的有效方法是看见的实际运动就是合运动.合运动的分解从理论上说可以是任意的,但一般按运 ...

  7. sequelize模型关联_Node.js Sequelize 模型(表)之间的关联及关系模型的操作

    Sequelize模型之间存在关联关系,这些关系代表了数据库中对应表之间的主/外键关系.基于模型关系可以实现关联表之间的连接查询.更新.删除等操作.本文将通过一个示例,介绍模型的定义,创建模型关联关系 ...

  8. 【Laravel笔记】10. 模型的关联查询

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:La ...

  9. matlab小船渡河物理模型,高中物理 | 小船渡河模型及关联速度问题

    原标题:高中物理 | 小船渡河模型及关联速度问题 在运动的合成与分解中,如何判断物体的合运动和分运动是首要问题,判断合运动的有效方法是看见的实际运动就是合运动.合运动的分解从理论上说可以是任意的,但一 ...

最新文章

  1. 分布式事务原理及实战seata(转自微信公众号 终码一生 )
  2. 【转】oracle having -OCP-047-53
  3. linux malloc free 内存碎片_内存申请malloc/new与内存释放free/delete的区别
  4. 108扫货节完美收官 在线交易额破千万
  5. 解析搜索引擎的Robots协议
  6. ArcGIS 10.X功能增减(转)
  7. 51nod 平均数(二分+树状数组)
  8. visa虚拟卡生成器_你们要的电子虚拟信用卡,它来了,准备好盘了吗?
  9. linux开机出现repaire filesystem
  10. 【深度完美精简版 5.10】 Deepin-LiteXP-5.10
  11. 《操作系统》考前秘籍
  12. android调试遇到ADB server didn't ACK以及蛋疼的sjk_daemon进程
  13. 清理win10不常用服务
  14. cocos creator休闲游戏甜品幻想H5+安卓+IOS三端源码开发脚本为javaScript
  15. css 对checkbox样式进行修改
  16. photoshp案例技巧-彭亮-专题视频课程
  17. matlab 格兰杰,matlab非参数的格兰杰因果分析
  18. 对Restful的理解
  19. core文件处理和进程查询
  20. 蓝桥杯 — 星系炸弹( 在X星系的广袤空间中漂浮着许多X星人造“炸弹”)

热门文章

  1. 南通市交巡警支队同城异地容灾备份系统项目中标结果公告
  2. matlab中怎么求矩阵的特征值和特征向量
  3. Matlab下 IIR 滤波器实现(Simulink仿真和C语言实现)
  4. rtmp推流时间戳兼容问题
  5. PCL中PFH、FPFH理论
  6. 数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value
  7. 树莓派一键备份脚本 备份为img镜像 可用于量产 可选备份位置 适配Debian/Ubuntu
  8. python的数值可以转换为字符串_python 数值转换为字符串Python对HTML转义字符进行反转义...
  9. pythonista3使用说明_pythonista3都能做什么
  10. simple k means