
- Yii 教程
- Yii - 首頁
- Yii - 概述
- Yii - 安裝
- Yii - 建立頁面
- Yii - 應用結構
- Yii - 入口指令碼
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用動作
- Yii - 模型
- Yii - 小部件
- Yii - 模組
- Yii - 檢視
- Yii - 佈局
- Yii - 資源
- Yii - 資源轉換
- Yii - 擴充套件
- Yii - 建立擴充套件
- Yii - HTTP 請求
- Yii - 響應
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 規則
- Yii - HTML 表單
- Yii - 驗證
- Yii - 即席驗證
- Yii - AJAX 驗證
- Yii - 會話
- Yii - 使用快閃記憶體資料
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 檔案上傳
- Yii - 格式化
- Yii - 分頁
- Yii - 排序
- Yii - 屬性
- Yii - 資料提供者
- Yii - 資料小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 建立事件
- Yii - 行為
- Yii - 建立行為
- Yii - 配置
- Yii - 依賴注入
- Yii - 資料庫訪問
- Yii - 資料訪問物件
- Yii - 查詢構建器
- Yii - 活動記錄 (Active Record)
- Yii - 資料庫遷移
- Yii - 主題
- Yii - RESTful API
- Yii - RESTful API 實戰
- Yii - 欄位
- Yii - 測試
- Yii - 快取
- Yii - 片段快取
- Yii - 別名
- Yii - 日誌
- Yii - 錯誤處理
- Yii - 身份驗證
- Yii - 授權
- Yii - 本地化
- Yii - Gii
- Gii – 建立模型
- Gii – 生成控制器
- Gii – 生成模組
- Yii 有用資源
- Yii - 快速指南
- Yii - 有用資源
- Yii - 討論
Yii - 活動記錄 (Active Record)
活動記錄提供了一個面向物件的 API 用於訪問資料。一個活動記錄類與一個數據庫表相關聯。
Yii 為以下關係資料庫提供活動記錄支援:
- MySQL 4.1 或更高版本
- SQLite 2 和 3
- PostgreSQL 7.3 或更高版本
- Microsoft SQL Server 2008 或更高版本
- CUBRID 9.3 或更高版本
- Oracle
- ElasticSearch
- Sphinx
此外,活動記錄類還支援以下NoSQL 資料庫:
- Redis 2.6.12 或更高版本
- MongoDB 1.3.0 或更高版本
為單獨的資料庫表宣告活動記錄類(在本例中為MyUser 模型)後,應按照以下步驟查詢其中的資料:
- 使用 yii\db\ActiveRecord::find() 方法建立一個新的查詢物件。
- 構建查詢物件。
- 呼叫查詢方法來檢索資料。
步驟 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() { // return a single user whose ID is 1 // SELECT * FROM `user` WHERE `id` = 1 $user = MyUser::find() ->where(['id' => 1]) ->one(); var_dump($user); // return the number of users // SELECT COUNT(*) FROM `user` $users = MyUser::find() ->count(); var_dump($users); // return all users and order them by their IDs // SELECT * FROM `user` ORDER BY `id` $users = MyUser::find() ->orderBy('id') ->all(); var_dump($users); }
上面給出的程式碼展示瞭如何使用 ActiveQuery 查詢資料。
步驟 2 - 訪問https://:8080/index.php?r=site/test-db,您將看到以下輸出。

按主鍵值或一組列值查詢是一項常見任務,因此 Yii 提供了以下方法:
yii\db\ActiveRecord::findOne() - 返回單個活動記錄例項
yii\db\ActiveRecord::findAll() - 返回活動記錄例項陣列
示例 -
public function actionTestDb() { // returns a single customer whose ID is 1 // SELECT * FROM `user` WHERE `id` = 1 $user = MyUser::findOne(1); var_dump($user); // returns customers whose ID is 1,2,3, or 4 // SELECT * FROM `user` WHERE `id` IN (1,2,3,4) $users = MyUser::findAll([1, 2, 3, 4]); var_dump($users); // returns a user whose ID is 5 // SELECT * FROM `user` WHERE `id` = 5 $user = MyUser::findOne([ 'id' => 5 ]); var_dump($user); }
儲存資料到資料庫
要將資料儲存到資料庫,應呼叫yii\db\ActiveRecord::save() 方法。
步驟 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() { // insert a new row of data $user = new MyUser(); $user->name = 'MyCustomUser2'; $user->email = 'mycustomuser@gmail.com'; $user->save(); var_dump($user->attributes); // update an existing row of data $user = MyUser::findOne(['name' => 'MyCustomUser2']); $user->email = 'newemail@gmail.com'; $user->save(); var_dump($user->attributes); }
步驟 2 - 訪問https://:8080/index.php?r=site/test-db,您將看到以下輸出。

要刪除單行資料,應:
檢索活動記錄例項
呼叫yii\db\ActiveRecord::delete() 方法
步驟 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() { $user = MyUser::findOne(2); if($user->delete()) { echo "deleted"; } }
步驟 2 - 在 Web 瀏覽器的位址列中輸入https://:8080/index.php?r=site/test-db,您將看到以下輸出。

步驟 3 - 您還可以呼叫yii\db\ActiveRecord::deleteAll() 方法刪除多行資料,例如。
public function actionTestDb() { MyUser::deleteAll('id >= 20'); }
廣告