日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

yii model层操作总结

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的yii model层操作总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。