ActiveRecord(活動記錄)提供了面向對象接口,用以訪問數據庫中的數據。一個AR類關聯一張數據表,通過操作實例化的AR類模型達到處理數據的目的。
1、創建數據模型,聲明AR類:
在類中引用AR基類,實現tblName方法,綁定與之關聯的數據表:
~~~
namespace app\models;
use yii\db\ActiveRecord;
class User extends ActiveRecord{
public static function tableName()
{
return 'tbl_user';
}
}
~~~
注:如果應用中配置了多個數據庫連接,且需給AR類使用不同的數據庫連接(DB connection),可以重寫覆蓋yii\db\ActiveRecord::getDb()方法:
~~~
public static function getDb()
{
return \Yii::$app->dbN; //可設置名為dbN的應用組件
}
~~~
2、查詢數據
AR 提供了兩種方法來構建 DB 查詢并向 AR 實例里填充數據:
~~~
yii\db\ActiveRecord::find()
yii\db\ActiveRecord::findBySql()
~~~
以上兩個方法都會返回 yii\db\ActiveQuery 實例,該類繼承自yii\db\Query。
~~~
$user1 = User::findOne($condition)/findAll($condition);//用來返回一個/所有ActiveRecord實例
$user2 = User::findBySql($sql)
$user3 = User::find()
->where() // 添加查詢條件
->one()/all() // 返回一條/所有數據
->count() // 返回記錄的數量
->indexBy() // 根據索引的列的名稱查詢結果
->orderBy() // 添加排序規則
->select() // 挑選字段
->with() // 該查詢應執行的關系列表
->asArray() //以數組形式獲取數據
->batch(int $n) //一次提取n條數據
->each(int $n) //一次提取n條數據并逐一遍歷
->sum() //返回指定列的總數
->average() //返回指定列的平均值
->min() //返回指定列的最小值
->max() //返回指定列的最大值
->scalar() //返回查詢結果的第一行中的第一列的值
->column() //返回查詢結果中的第一列的值
->exists() //返回一個值,該值指示查詢結果是否有數據
~~~
3、操作數據
~~~
yii\db\ActiveRecord::save() //保存
yii\db\ActiveRecord::insert() //插入
yii\db\ActiveRecord::update() //更新
yii\db\ActiveRecord::delete() //刪除
~~~
須知:`save()` 方法會調用 `insert()` 和 `update()` 中的一個, 用哪個取決于當前 AR 對象是不是新對象(在函數內部,他會檢查 yii\db\ActiveRecord::isNewRecord 的值)。 若 AR 對象是由 new 操作符 初始化出來的,save() 方法會在表里插入一條數據; 如果一個 AR 是由 find() 方法獲取來的, 則 save() 會更新表里的對應行記錄。
數據輸入與有效性驗證
由于AR繼承自yii\base\Model,所以它同樣也支持Model的數據輸入、驗證等特性。例如,你可以聲明一個rules方法用來覆蓋掉yii\base\Model::rules()里的;你也可以給AR實例批量賦值;你也可以通過調用`yii\base\Model::validate()`執行數據驗證。
當你調用` save()、insert()、update()` 這三個方法時,會自動調用`yii\base\Model::validate()`方法。如果驗證失敗,數據將不會保存進數據庫。
- 前文
- 安裝前的準備
- windows安裝Composer
- Linux安裝Composer
- 開始使用
- 安裝yii2.0
- 初始化項目
- 檢測運行環境
- 數據庫
- 連接數據庫
- 添加
- 查詢
- join
- joinWith
- with
- asArray
- offset
- filterWhere
- 關聯查詢
- 更新
- AR更新
- with和JoinWith的區別?
- Yii2.0框架基礎--數據查詢之AR類方法一
- 數據庫遷移Migration
- 查看最后執行SQL語句
- 事務處理
- 例子
- 控制器
- rules驗證方法
- behaviors行為
- actions動作
- 模型
- 模型使用
- attributeLabels
- tableName
- fields
- 視圖
- 顯示視圖
- 獲取配置參數
- 格式化時間顯示
- Activeform效果
- Activeform表單部分組件使用方法
- RESTful服務
- 版本化控制
- 郵件mail
- 郵件配置
- 郵件樣板
- session
- Yii2.0 Session操作大全(增、刪、改、銷毀、Session數組賦值、讀取)
- 緩存
- 跨APP讀取緩存(文件緩存)
- Memcache
- 最佳實踐
- 控制器
- 模型
- 視圖
- 常見問題
- 解決根目錄沒有vendor目錄
- 安裝composer-asset插件錯誤
- Url隱藏index.php
- nginx配置
- Apache配置
- 配置
- 設置系統默認中文提示
- 數據庫問題
- where和andWhere不能同時使用嗎?
- debug
- 編輯器使用技巧
- phpstorm
- Redis
- redis安裝
- redis例子
- RBAC
- Redis和memcache概念
- 生成接口文檔
- Swagger安裝
- Swagger語法
- 擴展
- 七牛云存儲
- 視頻縮略圖
- Pjax
- A鏈接不能跳轉解決辦法