(5)查询范围
在控制器中 模型操作
get() 和 all() 只能单独使用来查询数据
想要链式操作查询数据 需要使用find() 和select() 这里返回的都是对象集
所以,在运用到查询范围时,$list = UserModel::scope(‘email,status’)->all();会出现报错现象,可以将all()方法改为select()方法
scope闭包
scope(匿名函数);
范例:list=UserModel::scope(‘email′)−>scope(‘status′)−>scope(function(list=UserModel::scope(‘email′)−>scope(‘status′)−>scope(function(query) {
$query->order(‘id’, ‘desc’);
})
->select();
全局查询范围
可以给模型定义全局的查询范围,在模型类添加一个静态的 base 方法即可,例如我们给模型类增加一个全局查询范围,用于查询状态为1的数据:
protected static function base($query)
{
$query->where('status',1);
}
本文介绍了在TP5框架中如何进行模型操作和查询范围的设置。在控制器中,`get()`和`all()`不支持链式操作,而`find()`和`select()`返回的对象集则可以。在应用查询范围时,如`UserModel::scope('email,status')->all();`可能会导致报错,建议使用`select()`代替。此外,展示了如何使用scope闭包和定义全局查询范围,例如通过`base()`方法为模型定义查询状态为1的数据的全局范围。"
5997663,35190,SQL Server 2008 查询性能监控,"['SQL Server', '数据库', 'query', '性能监控']
1249

被折叠的 条评论
为什么被折叠?



