[TOC]
可以通过集成yii\base\Model或者他的子类定义模型类
支持许多实用特性:
* 属性: 表现业务数据,可以像普通类属性或者数组一样被访问
* 属性标签: 指定属性显示出来的标签
* 块赋值:支持一步给许多属性赋值
* 验证规则: 确保输入数据符合所声明的验证规则
* 数据导出:允许模型数据导出为自定义格式的数组
Model类也是更多高级模型如`Active Record`活动记录的基类
Model中方法
rules是验证规则,哪些属性用到哪些规则
attributeLabels是属性中在页面上显示什么,不指定用属性名
---
\[\[yii\\base\\Model\]\] 被用于普通模型类的父类并与数据表\*\*无关\*\*。\[\[yii\\db\\ActiveRecord\]\] 通常是普通模型类的父类但与数据表有关联(译者注:\[\[yii\\db\\ActiveRecord\]\] 类其实也是继承自 \[\[yii\\base\\Model\]\],增加了数据库处理
---
# 模型方法简介
----
分批次查询(结果已经是array)
~~~
foreach (Goods::find()->batch(2) as $v) {
var_dump($v);
}
~~~
单表查询
one获取一条记录,
快捷方法findOne和findAll
~~~
Country::find()->where(['>', 'id', 1])->all();
Country::find()->where(['between', 'id', 1, 10])->all();
Country::find()->where(['like', 'title', 'xxx'])->all();
~~~
---
# 关联查询hasMany
![](https://box.kancloud.cn/ea7ea0de883b8f3de9a941d6954c03aa_1318x236.png)
变为数组的话
~~~
$res = $goods->hasMany(Cate::className(), ['goods_id' => 'id'])->asArray()->all();
~~~
yii有_get,方法加上getXxx,然后控制器模型->方法(不加get)
---
# with查询
先确保 表 有对应方法
~~~
public function getCate()
{
return $this->hasMany(Cate::className(), ['goods_id' => 'id']);
}
~~~
在控制器中
~~~
public function actionIndex()
{
$res = Goods::find()->with('cate')->asArray()->all();
echo '<pre>';
var_dump($res);
die;
}
~~~
with类似于
~~~
SELECT * FROM `topic`
SELECT * FROM `comment` WHERE `topic_id` IN (1, 2, 3, 4, 5)
~~~
# joinWith()
~~~
Goods::find()->joinwith('cate')->asArray()->all();
~~~
~~~
// 输出的 SQL
SELECT `topic`.* FROM `topic` LEFT JOIN `comment` ON `topic`.`id` = `comment`.`topic_id`
~~~
# load
load可以加载$POST数据,但是post数据下标必须和model类名一致的
例如`Article::load($_POST)`等于加载`$_POST['Article']`里面的数据,另外load的字段必须出现在rules方法的数组中,不然也无法直接赋值
![](https://box.kancloud.cn/6a82d61a0a07db5451d9ffee281cfb63_450x359.png)
# 验证规则
rules验证规则是在model调用validate()时候调用的
rules有22种验证规则,常用有以下几种
![](https://box.kancloud.cn/0607747124225a78f83c64d7914dd5c4_851x476.png)
![](https://box.kancloud.cn/96ab9a4d83666f70b5bb228daca30c44_861x713.png)
![](https://box.kancloud.cn/dc1dd5c1deda67b95c4534f40c0ac3df_479x260.png)
自定义
![](https://box.kancloud.cn/43c76e30c47642d18a141c929cf9cbcc_1219x415.png)
- 目录
- 配置
- 简介
- 别名
- gii
- 配置项
- 模型
- 简介
- 增删改查
- AR和model
- 模型事件
- 场景
- query查询
- 增删改
- AR查询器
- 模型关系定义
- AR模型连表查询
- fields
- where拼接
- 模块
- 创建模块
- 控制器
- 表单
- 跳转
- 响应
- 验证器
- Action
- 组件
- url
- 分页
- 验证码
- 缓存
- 文件上传
- 预启动组件
- 事件
- 自定义组件
- redis
- 日志
- 行为
- cookie和session
- 基础知识
- 创建一个类
- 配置一个类
- object基类
- component组件类特性
- phpstorm无法更改php等级
- url地址美化
- 过滤器
- 请求处理
- 请求组件
- 响应组件
- header
- 用户登录
- 实现IdentityInterface接口
- 登录
- 自动检测登录
- 获取用户信息
- 访问行为追踪
- phpstorm+postman断点调试