[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

變為數組的話
~~~
$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方法的數組中,不然也無法直接賦值

# 驗證規則
rules驗證規則是在model調用validate()時候調用的
rules有22種驗證規則,常用有以下幾種



自定義

- 目錄
- 配置
- 簡介
- 別名
- gii
- 配置項
- 模型
- 簡介
- 增刪改查
- AR和model
- 模型事件
- 場景
- query查詢
- 增刪改
- AR查詢器
- 模型關系定義
- AR模型連表查詢
- fields
- where拼接
- 模塊
- 創建模塊
- 控制器
- 表單
- 跳轉
- 響應
- 驗證器
- Action
- 組件
- url
- 分頁
- 驗證碼
- 緩存
- 文件上傳
- 預啟動組件
- 事件
- 自定義組件
- redis
- 日志
- 行為
- cookie和session
- 基礎知識
- 創建一個類
- 配置一個類
- object基類
- component組件類特性
- phpstorm無法更改php等級
- url地址美化
- 過濾器
- 請求處理
- 請求組件
- 響應組件
- header
- 用戶登錄
- 實現IdentityInterface接口
- 登錄
- 自動檢測登錄
- 獲取用戶信息
- 訪問行為追蹤
- phpstorm+postman斷點調試