yii model层操作总结

yii model层操作属性和方法总结。

tableName – 设置Model所对应的表名,例如:

public function tableName(){return 'gshop_order_ext';}

rules – 设置Model里各字段的验证规则

relations – 设置关联规则

attributeLabels – 设置各字段的别名

safeAttributes – 设置可以修改属性的字段

beforeValidate和afterValidate – 字段验证前和验证后执行的函数, 需要返回true值

beforeSave和afterSave – 记录存储前和存储后执行的函数, 需要返回true值

其次, Yii里的ORM使用的是AR, 有几个主要的操作, 分别是:

save – 操作数据

update – 修改数据

delete – 删除数据

validate – 验证数据

读取记录时, 有以下几个方法:

findByPk – 通过主键查找记录, 结果为单条记录

findByAttribute – 通过属性查找记录, 结果为单条记录

findAllByAttributes – 通过属性查找数据, 结果为记录集

findAll – 通过CDbCriteria对象查找数据, 结果为记录集 *

查找方法接收的参数有2种, 没有星号的, 接受数组作为参数, 有星号的接收CDbCriteria对象作为参数, 使用对象的时候, 可以提供更多的查找条件, 下面给出一个实例:

$criteria = new CDbCriteria; // 创建CDbCriteria对象
$criteria->condition = 'title LIKE %' . 'php' . '%'; // 设置查询条件
$criteria->order = 'createdTime DESC'; // 设置排序条件
$criteria->limit = 10; // 限定记录的条数
$criteria->select = 'id,title,content'; // 设置结果所包含的字段

$articles = Article::model()->findAll($criteria); //结果为数组, 其中每个元素为记录对象

再次, Yii对关联数据默认采用LazyLoad的加载形式, 即需要时才读取. 这样, 当我们不需要关联数据的时候, Yii是不会帮我们去读取的, 大大加快了反应的速度. 但是也有一些时候, 我们是需要关联数据的, 比如说读取文章的时候, 我们是需要文章所属的分类的, 如果使用LazyLoad的形式, 就要有多少条, 查询多少次, 效率非常低下, 这时就需要EagerLoad了, 即一次把关联表的数据全部读出.

比如:

查看代码
打印
1$articles = Article::model()->with('category')->findAll();

使用with将关联表的数据一次全部读出. 关联表的设置在Model里的relation里设置.

比如:

查看代码
打印
1public function relations() {
2       return array(
3             'category' => array(self::BELONGS_TO, 'Category''categoryId'),
4       );
5}

非常的清晰明了。

转载于:https://www.cnblogs.com/xieqian111/p/5212505.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目开发模式

项目开发模式 在预测未来之前,首先分析一下程序员的日常工作中遇到哪些困难与挑战。 需求和设计 在需求沟通阶段,程序员需要准确的获取PRD上的需求信息,并对业务的价值和发展有一定的预判。根据以上的信息进行技术选型,数据建模&a…

java——获取视频某一帧的图片

https://blog.csdn.net/whm18322394724/article/details/87558142 https://blog.csdn.net/xiazdong/article/details/6929975

11.m进制转十进制

Strlen是字符串有多长就是多长&#xff0c;包括所有的元素和\0这个结束符 题目描述 Description 将m进制数n转化成一个十进制数 m<16 题目保证转换后的十进制数<100 输入描述 Input Description 共一行 n和m 输出描述 Output Description 共一个数 表示m进制的n化成十进制…

ThinkPHP 3.2.3 关联模型的使用

关于关联模型 ThinkPHP 3.2.3 的关联模型&#xff08;手册地址&#xff09;一般处理关联数据表的 CURD 操作&#xff0c;例如关联读取、关联写入、关联删除等。 实例 博客管理模块关于博客有 4 张数据表&#xff1a;博客表 crm_blog&#xff1a; CREATE TABLE crm_blog (id int…

js 获取元素

putArrdocument.getElementsByClassName() ()(“input的class名称”); putArrdocument.getElementById()(“input的id”); putArrdocument.getElementsByName(“input的名称”); var aLi document.getElementsByTagName(‘Li’);

CSS布局方法

1. 两列布局 &#xff08;1&#xff09;第一种方法&#xff1a; html: 1 <div id"Lbar"></div> 2 <div id"Rbar"></div> css: 1 #Lbar{height: 600px;width:200px;background: red;float: left;} 2 #Rbar{height: 600px;width: 60…

Springcloud整理

Springcloud 答题技巧&#xff1a; 总&#xff1a;当前问题回答的是那些具体的点 分&#xff1a;以1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5的方式分细节取描述相关的知识点&#xff0c;如果有哪些点不清楚&#xff0c;直接忽略过去 突出一些技术名词&#…

java 正则表达式的使用

https://segmentfault.com/q/1010000007136433/a-1020000007139400

Redis集群搭建笔记

系统为CentOS7,创建9001-9006 6个文件夹,复制 redis-server redis.conf 文件到6个新文件夹下 redis.conf文件配置如下: port 9001 daemonize yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 3000 cluster-require-full-coverage no appendonly …

记一次生产频繁出现 Full GC 的 GC日志定位

https://cloud.tencent.com/developer/article/1552089 https://www.cnblogs.com/klvchen/articles/11758324.html 感谢&#xff01;

正则高级用法-分组group+替换

public static void main(String[] args) {Pattern patternTestPattern.compile("c\\(a\\)\\(t\\(2\\)\\)");Matcher matcherTestpatternTest.matcher("c(a)(t(2))");System.out.println(matcherTest.matches()); // 全部匹配System.out.println();patter…

java 安全加密

https://www.cnblogs.com/tancky/p/6409823.html https://blog.csdn.net/gulang03/article/details/81771341