ThinkPHP3.1的命名范围功能,给模型操作提供了一系列的(连贯操作)封装,让你更方便的查询和操作数据。下面我们就来具体了解下这一用法。
1.定义属性
要使用命名范围功能,主要涉及到模型类的_scope属性定义和scope连贯操作方法的使用。
我们首先定义_scope属性:
class NewsModel extends Model { protected $_scope = array( // 命名范围normal 'normal'=>array( 'where'=>array('status'=>1), ), // 命名范围latest 'latest'=>array( 'order'=>'create_time DESC', 'limit'=>10, ), ); }
_scope属性是一个数组,每个数组项表示定义一个命名范围,命名范围的定义格式为:
'命名范围标识'=>array( '属性1'=>'值1', '属性2'=>'值2', ... )
2.命名范围标识:可以是任意的字符串,用于标识当前定义的命名范围。
命名范围支持的属性包括:
where | 查询条件 |
field | 查询字段 |
order | 结果排序 |
table | 查询表名 |
limit | 结果限制 |
page | 结果分页 |
having | having查询 |
group | group查询 |
lock | 查询锁定 |
distinct | 唯一查询 |
cache | 查询缓存 |