十八、AR数据库的关联查询relations之单条数据查询
为什么80%的码农都做不了架构师?>>>
他们分别代表这几个类
const BELONGS_TO='CBelongsToRelation';const HAS_ONE='CHasOneRelation';const HAS_MANY='CHasManyRelation';const MANY_MANY='CManyManyRelation';const STAT='CStatRelation';
public function relations(){// NOTE: you may need to adjust the relation name and the related// class name for the relations automatically generated below.return array('city'=>array(self::BELONGS_TO,'City','city_id'),);}
public function actionRelation($id){$id = trim($id);//懒惰加载$user = User::model()->findByPk($id);//此时的user对象的related属性是一个空数组,user对象的打印结果如下图dump($user);
// $city = $user->city;
// dump($city);}
再调用user对象里面的city关联属性
public function actionRelation($id){$id = trim($id);//懒惰加载$user = User : : model() - > findByPk($id);//此时的user对象的related属性是一个空数组,user对象的打印结果如下图
// dump($user);//获取与user对象相关联的city对象,调用city属性的时候,会调用relations方法里面city对应的 关联关系 找到city对象$city = $user - > city;//打印结果见下图dump($city);
public function actionRelation($id){$id = trim($id);//懒惰加载$user = User::model()->findByPk($id);//此时的user对象的related属性是一个空数组,user对象的打印结果如下图
// dump($user);//获取与user对象相关联的city对象,调用city属性的时候,会调用relations方法里面city对应的 关联关系 找到city对象$city = $user->city;
// dump($city);//此时我们再打印user对象,related属性就不是一个空数组了,打印结果如下图dump($user,false);//我们可以像调用user属性一样去调用city对象的属性,比如我想获取城市名dump($city->name);}
//饥渴式加载我们使用到关键词with在find之前
public function actionEager($id){$id = trim($id);//饥渴式加载$user = User::model()->with('city')->findByPk($id);dump($user);}
我们看到打印结果,如果使用with关键词之后,默认就已经将city表对应数据加载到user对象的related属性中
//饥渴式加载我们使用到关键词with在find之前public function actionEager($id){$id = trim($id);//饥渴式加载$user = User::model()->with('city')->findByPk($id);
// dump($user);//获取城市名称$name = $user->city->name;//打印结果如下dump($name);}
'广州'
user_info表 建表语句
CREATE TABLE `user_info` (`id` int(10) unsigned NOT NULL auto_increment,`user_id` int(10) unsigned NOT NULL default '0' COMMENT '用户ID',`info` text character set utf8 NOT NULL COMMENT '简介',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户信息表
//添加一个user_info 的关联关系public function relations(){// NOTE: you may need to adjust the relation name and the related// class name for the relations automatically generated below.return array('city'=>array(self::BELONGS_TO,'City','city_id'),'user_info'=>array(self::HAS_ONE,'UserInfo','user_id'),);}
在饥渴式加载中如下使用,with方法中添加一个参数user_info即可
public function actionEager($id){$id = trim($id);//饥渴式加载$user = User::model()->with('city','user_info')->findByPk($id);dump($user);}
打印结果如下图,可以看到city对象与user_info对象都已经加载到user对象的related属性中了
转载于:https://my.oschina.net/lonxom/blog/168257
十八、AR数据库的关联查询relations之单条数据查询相关推荐
- MySQL二十八规范数据库设计
MySQL二十八:规范数据库设计 糟糕的数据库设计: ●数据冗余,浪费空间 ●数据库插入和删除都会麻烦.异常[ 屏蔽使用物理外键] ●程序的性能差 良好的数据库设计: ●节省内存空间 ●保证数据库的完 ...
- Reflex WMS入门系列十八:如何看年终盘点的Inventory report数据?
Reflex WMS入门系列十八:如何看年终盘点的Inventory report数据? Reflex WMS系统中的盘点分为cycle count(循环盘点)和physical inventory( ...
- Django笔记二十八之数据库查询优化汇总
这一篇笔记将从以下几个方面来介绍 Django 在查询过程中的一些优化操作,有一些是介绍如何获取 Django 查询转化的 sql 语句,有一些是理解 QuerySet 是如何获取数据的. 以下是本篇 ...
- 微信小程序开发之十八 —— 云数据库入门
文章目录 学习前后 云数据库的基础知识 数据库权限限制 简易权限配置 安全规则 数据库查询 查询指令command 条件查询法一:Collection.where 条件查询法二:Collection. ...
- MySQL燕十八老师课程笔记:第十一课:子查询
# 查出本网站最新的(goods_id)最大的一条商品 # 思路:按goods_id desc排序,再取第一行 select goods_id,goods_name from goods order ...
- Oracle数据库-第一章:select语句,数据查询操作
前言: 1.一个认知 认知什么是oracle? oracle:商业运用第一的关系型数据库 实质:关系型数据库 了解oracle数据库发展历史(文档) 2.二个概念 数据库:数据存储的仓库 关系型数据库 ...
- (Java数据库编程基础操作)Statement实现数据查询操作
Statement实现数据查询操作 在整个数据库的开发过程之中数据的查询操作是最复杂的,因为查询会牵扯到各种复杂查询的管理,例如:多表查询.子查询.统计查询.集合操作等等,但是从现代的开发来讲,对于数 ...
- 阿里云图数据库GDB公测,高度连接数据查询效率提升10倍
3月21日,阿里云图数据库GDB正式公测,用于处理高度连接数据查询与存储,支持属性图模型,并且全面兼容TinkerPop Gremlin 查询语言. 图数据库覆盖的应用场景非常广泛,比较典型的有社交网 ...
- SQL查询效率:100w数据查询只需要1秒钟
机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2000 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by s ...
最新文章
- boundingRectWithSize 的使用
- Wireshark:Usage in Ubuntu 18.04 distribution
- SOA流程项目到底是业务流还是工作流
- Maven配置阿里镜像仓库
- html绘图环境,HTML_HTML5 在canvas中绘制文本附效果图,一、绘制文本 在绘图环境中提 - phpStudy...
- jenkins部署_Jenkins:部署JEE工件
- 2021-5-18大搜车
- 【转载】不带www跳转www.设定网站唯一入口,提升权重!
- leetcode 回文数
- Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(下)
- 二维码编解码 Java调用示例代码
- Struts2的Action访问Session对象的两种方式及原理
- 设计教务管理系统MySQL,数据库设计实例 教务管理系统
- Intro.js 分步向导插件使用方法
- Ubuntu18.04 Deb 包安装方法
- QQ空间人气精灵王 QQ空间人气提升
- OpenStack必备基础知识
- 使用python脚本和crontab在阿里云实现优矿自动签到
- 各软件版本、仓库、官网地址
- JSP九大内置对象:
热门文章
- 在Vim中将DOS行尾转换为Linux行尾
- 如何在Bash脚本中将Heredoc写入文件?
- 大O,您如何计算/近似?
- spring Bean的初始化和销毁 (使用注解)
- RandomAccessFile 随机存取文件任意位置数据
- 中外合作有开计算机课吗,探究中外合作办学计算机应用课程建设.doc
- java vo转map_Java后端必备的开发规范
- python变量图片_在Python中向3D图添加第4个变量
- pcm5102a解码芯片音质评测_简单测评200元档可能是唯一搭载高通QCC3020芯片的真无线蓝牙耳机...
- ❤️再也不用为了重写方法而苦恼了,Lombok帮你解决!