广告位 |
thinkphp查询范围
2021年9月25日 11:14编程 > 1028人已围观
简介 可以对模型的查询和写入操作进行封装,例如:在查询的时候可以如下使用: // 查询email包含thinkphp和分数大于80的用户User::email('thinkphp')->score(80)->select(); 可以直接使用闭包函数进行查询,例如:...
可以对模型的查询和写入操作进行封装,例如:
<?php namespace app\model;use think\Model;class User extends Model{ public function scopeThinkphp($query) { $query->where('name','thinkphp')->field('id,name'); } public function scopeAge($query) { $query->where('age','>',20)->limit(10); } }
就可以进行下面的条件查询:
// 查找name为thinkphp的用户User::scope('thinkphp')->find();// 查找年龄大于20的10个用户User::scope('age')->select();// 查找name为thinkphp的用户并且年龄大于20的10个用户User::scope('thinkphp,age')->select();
查询范围的方法可以定义额外的参数,例如User模型类定义如下:
<?php namespace app\model;use think\Model;class User extends Model{ public function scopeEmail($query, $email) { $query->where('email', 'like', '%' . $email . '%'); } public function scopeScore($query, $score) { $query->where('score', '>', $score); } }
在查询的时候可以如下使用:
// 查询email包含thinkphp和分数大于80的用户User::email('thinkphp')->score(80)->select();
可以直接使用闭包函数进行查询,例如:
User::scope(function($query){ $query->where('age','>',20)->limit(10);})->select();
使用查询范围后,只能使用
find
或者select
查询。
全局查询范围
支持在模型里面设置globalScope
属性,定义全局的查询范围
<?php namespace app\model;use think\Model;class User extends Model{ // 定义全局的查询范围 protected $globalScope = ['status']; public function scopeStatus($query) { $query->where('status',1); }}
然后,执行下面的代码:
$user = User::find(1);
最终的查询条件会是
status = 1 AND id = 1
如果需要动态关闭所有的全局查询范围,可以使用:
// 关闭全局查询范围User::withoutGlobalScope()->select();
可以使用withoutGlobalScope
方法动态关闭部分全局查询范围。
User::withoutGlobalScope(['status'])->select();
上一篇: thinkphp数据模型获取器
下一篇: thinkphp模型数据的更新操作
广告位 |
相关文章
随机图文
-
胡锡进:孟晚舟以不认罪的方式获释
胡锡进写道:“过去的1000多天对她来说是颠覆性的,对国际关系来说也是颠覆性的。然而在中国政府的强大协助下,孟晚舟最终以不认罪的方式得以获释,这令人欣慰。与前法国阿尔斯通公司高管弗雷德里克·皮耶鲁齐当年在美国被判刑并受到5年监禁,以及阿尔斯通公司付出高额罚金、并被迫将核心业务出售给美国通用公司相比,孟晚舟和华为都幸运得多。”... -
出圈的B站,走不出“网络侵权”围城
在8月公布2021 Q2财报后,B站虽然暂时遏制住了股价下跌的颓势,但亏损持续扩大,游戏业务依旧疲软,以及国内政策日趋收紧等情况,导致市场对于“破圈”之后的发展不再像之前那样盲目乐观,这使得压力重新回到了B站的身上。... -
“0蔗糖”不等于无糖,妙飞主打健康食品可能游走在监管边缘
当下,健康饮食成为现代都市人热捧的生活方式,“O糖”、“O脂”更是被“炒”上了天。如果说年轻人对健康生活方式的追求出于某种潮流,那么年轻一代父母对于孩子的饮食就是近乎无原则的苛刻:孩子每天的营养是否均衡?蔬菜是不是有机,调和油是否转基因,酱油是否无添加、乳制品是否0糖……... -
全球公认的“最佳饮食榜”发布!
国庆假期第一天,想必大家都吃得好、喝得好、玩得好~不过想要日子过得好,饮食一定得讲究,我们可以利用食物的营养来防治疾病,促进健康长寿。但是吃得不对,很多疾病也会找上门!像三高、心血管疾病、癌症都与吃有...