登录  /  注册
博主信息
博文 250
粉丝 3
评论 0
访问量 371111
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
thinkphp5:模型中的查询范围
梁凯达的博客
原创
1687人浏览过

模型中的查询范围,主要用于对模型中的查询和写入操作进行封装
目的是为了让方法类调用某些常用字段或结果的时候,能够快速的调用,而不用每一次都写一条sql语句

  1. //设置命名空间
  2. namespace app/admin/model;
  3. use think/Model;
  4. 定义model类(在Model类中写入)
  5. Class User extends Model{
  6. protected function scopeThinkphp($query){
  7. $query->where('name','thinkphp')->field('id','name');
  8. //$query实参实际上等于new了一个User对象
  9. //对象调用查询条件为name为thinkphp的值,在指定字段id,name中查询
  10. }
  11. //又或者查询指定区间,查询范围命名方式为驼峰式命名
  12. protected function scopeAge($query){
  13. $query->where('age','>',20)->limit(10);
  14. //查询10条age大于10的数
  15. }
  16. }

当我们进行了查询范围的设置之后,我们就可以在控制器类中进行调用,比如:

  1. User::spoce('thinkphp')->find();
  2. User::spoce('age')->select();
  3. //下述方式可支持多个范围条件,以下为查询结果出名字为thinkphp,年龄大于20的结果
  4. User::sopce('thinkphp','age')->select();

同样支持传递参数,参数1为整个对象,参数2为附带条件

  1. namespace app\index\model;
  2. use think\Model;
  3. class User extends Model
  4. {
  5. protected function scopeAgeAbove($query, $lowest_age)
  6. {
  7. $query->where('age','>',$lowest_age)->limit(10);
  8. }
  9. }
  10. //在控制器中将范围和附加条件传进去
  11. User::scope('ageAbove', 20)->select();

并且支持动态调用的方式,比如上面的名称为Thinkphp的,可以动态调为:

  1. $user = new User;
  2. // 查找name为thinkphp的用户
  3. $user->thinkphp()->get();
  4. // 查找年龄大于20的10个用户
  5. $user->age()->all();
  6. // 查找name为thinkphp的用户并且年龄大于20的10个用户
  7. $user->thinkphp()->age()->all();
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学