上一篇文章講解“模型-數(shù)據(jù)完成”,本篇文章講解“模型-查詢范圍”。
可以對模型的查詢和寫入操作進(jìn)行封裝,例如:
就可以進(jìn)行下面的條件查詢:
注意:
1. 查詢范圍在模型中定義時(shí),不一定對應(yīng)字段名(scope+字符),在調(diào)用時(shí),調(diào)用名稱為字符。
1. 查詢范圍的使用
①新建User模型,并在模型中新建查詢范圍方法。
②新建Index控制器,并新建方法進(jìn)行條件查詢
③瀏覽器訪問:
注意:
1. 可以開啟Trace調(diào)試,查看sql語句。配置項(xiàng)文件.php中:
=> true
2. 動(dòng)態(tài)調(diào)用方式
支持動(dòng)態(tài)調(diào)用的方式。
①在Index控制器中定義方法,進(jìn)行動(dòng)態(tài)調(diào)用查詢范圍方法。
②瀏覽器訪問
3. 查詢范圍的方法定義額外參數(shù)
查詢范圍的方法可以定義額外的參數(shù)只能進(jìn)入index控制器,
①User模型類定義如下:
②在Index控制器中定義方法,進(jìn)行查詢
③瀏覽器訪問:
4. 直接使用閉包函數(shù)進(jìn)行查詢
①在Index控制器中定義方法,使用閉包函數(shù)進(jìn)行查詢
②瀏覽器訪問
注意:
1. scope的name駝峰的只能或不支持。
2. 命名范圍方法之前不能調(diào)用查詢的連貫操作方法,必須首先被調(diào)用。如果在查詢范圍方法后面調(diào)用了其他的鏈?zhǔn)讲樵兎椒ǎ瑒t只能使用find或者查詢。
5. 全局范圍查詢
如果你的所有查詢都需要一個(gè)基礎(chǔ)的查詢范圍,那么可以在模型類里面定義一個(gè)靜態(tài)的base方法,例如:
在Index控制器中新建查詢方法,測試全局的查詢范圍。
瀏覽器訪問:
6. 動(dòng)態(tài)關(guān)閉/開啟全局查詢
如果需要?jiǎng)討B(tài)關(guān)閉/開啟全局查詢訪問,可以使用:
在Index控制器中新建方法:
瀏覽器訪問:
?連載為卓象程序員原創(chuàng)只能進(jìn)入index控制器,轉(zhuǎn)載請聯(lián)系卓象程序員
關(guān)注卓象程序員,定期發(fā)布技術(shù)文章