Laravel 使用 scope 作用域

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  1. 模型层定义方法,加前缀 scope
    public function scopeWithOrder($query, $order)
    {
        //不同的排序,使用不同的数据读取逻辑
        switch ($order) {
            case 'recent':
                $query->recent();
                break;
            default:
                $query->recentReplied();
                break;
        }
        //预加载防止 N+1 问题
        return $query->with('user', 'category');
    }
    
    public function scopeRecentReplied($query)
    {
        //当话题有新回复时,我们将编写逻辑来更新话题模型的 reply_count 属性,
        //此时会自动触发框架对数据模型 updated_at 时间戳的更新
        return $query->orderBy('updated_at', 'desc');
    }
    
    public function scopeRecent($query)
    {
        //按照创建时间排序
        return $query->orderBy('created_at', 'desc');
    }
    
  2. 控制器层通过模型实例调用方法,不用加 scope
   public function index(Request $request, Topic $topic)
    {
        $topics = $topic->withOrder($request->order)->paginate(20);
        return view('topics.index', compact('topics'));
    }
  1. 关于方法中的参数 $query ,查看Api文档了解是 scope 定义的方法有俩个参数,一个是 Builder、一个是 Model
    Eloquent 模型方法前加上一个 scope 前缀,作用域总是返回 查询构建器。在调用 scope 作用域的方法时,通过返回的构建器来拼接成完整的查询条件。
    https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Scope.html
Laravelscope 查询作用域 Laravel使用scope作用域... 阅读详情

相关推荐

laravelscope的用法以及技巧

laravelscope的用法以及技巧 laravel中的scope作用域 laravel中在模板中处理(属于不属于)的数据(增删改查),引入了scope来处理 也就是在模板定义方法中,加上前缀scope。 简言之,Laravel中模型中可以定义scope开头方法,这类方法可以通过模型直接调用。这类方法也称作查询作用域。 <?php namespace App; use Il...

WXiangQian 5916

【127.1】Laravel 模型的 scope 普通用法和全局用法

在项目中 经常会面对一些条件的查询,这些查询条件好些是相同的。scope 可以实现这些相同条件的复用. 普通 scope 定义,函数名称为 scope + 首字母大写 Active (这个名称随意) public function scopeActive($query) { return $query->where('active',1); } 使用,正常使用,其中调用去掉 scope 后,首字母小写的那个函数。scopeActive () 调用 active ()。 $user = \Ap

米洛口的博客 628

laravel模型的scope前缀方法

Laravel中模型中可以定义scope开头方法,这类方法可以通过模型直接调用。 这类方法也称作查询作用域 参考文档:https://laravel-china.org/docs/laravel/5.6/eloquent 例如, 你可能经常需要获取「受欢迎的」用户。要定义这样一个范围,只需要在对应的 Eloquent 模型方法前加入 scope 前缀。scope方法总是返回一个查询构造器实例。...

Dev-Liangjian的博客 1919

laravel scope作用域使用

场景 在项目中 经常会面对一些条件的查询,这些查询条件好些是相同的。scope可以实现这些相同条件的复用. 局部作用域 这种用法是最常见的场景. eg: 一个论坛的问题的发布系统肯定是有一项是隐藏帖子,不显示给其他人看. 写法 1. 命名方式 . scope+自定义的方法名 2. 传参 . 第一个参数...

cominglately的博客 2876

scope全局作用域php,laravel scope作用域使用

场景在项目中 经常会面对一些条件的查询,这些查询条件好些是相同的。scope可以实现这些相同条件的复用.局部作用域这种用法是最常见的场景. eg: 一个论坛的问题的发布系统肯定是有一项是隐藏帖子,不显示给其他人看.写法1. 命名方式. scope+自定义的方法名2. 传参. 第一个参数是查询生成器. 如果传入参数 那么可以生成动态的效果 eg: scopePublished($...

weixin_31226805的博客 308

laravel】passport的scope作用域

1.根据作用域生成token $user->createToken($request->name,['test1'])->accessToken; 2.注册中间件 'scopes' => \App\Http\Middleware\CheckScopes::class, 'scope' => \App\Http\Middleware\CheckFor...

weixin_30443075的博客 470

Laravel模型里定义查询作用域scope前缀的方法

本地作用域: 在模型Model中定义   public function scopeMe($query)     {         $query-&gt;where('owner_id','=',Auth::guard('api')-&gt;id());     } 在控制器的使用  $list = Template::where('is_check', $request-&gt;...

cfun_goodmorning的博客 2248

php的scope是什么意思,laravel路由里的scope是什么

laravel路由里的scope是什么?laravel中的scope作用域laravel中在模板中处理(属于不属于)的数据(增删改查),引入了scope来处理也就是在模板定义方法中,加上前缀scope。简言之,Laravel中模型中可以定义scope开头方法,这类方法可以通过模型直接调用。这类方法也称作查询作用域laravel中要求在定义的方法scope后面跟的字母要大写后面那我们去控制器进行处...

weixin_39623716的博客 326

laravel 多条件结合scope查询作用域优化

最重要的是这种筛选条件可能根据需求不断的添加...那么我们是否可以优化这种情况呢…

tiway的博客 628

Laravel_make_scope 项目常见问题解决方案

Laravel_make_scope 项目常见问题解决方案 1. 项目基础介绍 laravel-make-scope 是一个开源的 Laravel 扩展包,它为 Laravel 框架添加了 make:scope 命令,使得开发者可以更方便地创建和使用查询作用域(Query Scopes)。查询作用域Laravel 中用于对数据库查询进行细粒度控制的一种方法,可以有效地组织代码,使得模型更加简洁...

gitblog_01058的博客 703

【亲测免费】 Laravel Make:Scope 命令扩展包推荐

Laravel Make:Scope 命令扩展包推荐 Laravel Make:Scope 是一个开源项目,为 Laravel 框架提供了生成查询作用域scopes)的命令行工具。该项目主要使用 PHP 编程语言开发。 项目基础介绍 Laravel Make:Scope 是一个微型扩展包,旨在简化 Laravel 开发者在模型中创建自定义查询作用域的过程。通过 Artisan 命令行工具,开发者...

gitblog_00007的博客 319

全局Scope与局部Scope有何区别,Laravel开发者不可不知的隐藏陷阱

掌握Laravel 10模型作用域Scope)的核心技巧,轻松区分全局Scope与局部Scope的应用场景与实现方式。详解addGlobalScopescope前缀方法,避免数据查询误读陷阱,提升代码可维护性,值得收藏。

LearnPlex的博客 953

Laravel架构优化利器】:模型Scope在复杂业务中的6大应用场景

掌握Laravel 10模型作用域Scope)提升代码复用与可维护性,本文详解6大复杂业务场景中的实战应用,涵盖全局作用域、动态查询封装与链式调用技巧。优化查询逻辑,统一数据过滤规则,让Eloquent更优雅高效,值得收藏。

InstrFun的博客 653

为什么你的Laravel查询越来越乱?可能是没用对模型Scope(附真实案例)

掌握Laravel 10模型作用域Scope)让查询更清晰可维护,避免代码混乱。适用于常见筛选、软删除处理等场景,通过定义局部与全局作用域提升复用性与可读性。真实案例解析助你高效组织查询逻辑,值得收藏。

GatherLume的博客 995

php 局部和全局作用域,一些查询需要在多个地方调用如何解决?用一下ORM全局作用域和局部作用域...

学习链接Eloquent 模型类提供的「Scope」功能就可以帮我们实现这种优化。「Scope」字面意义上翻译为「作用域」,有点不那么好理解,从功能上来说,把它看作预置的「过滤器」更合适。我们将那些需要在多处调用的查询条件编写过滤器,然后将调用查询代码的地方改为调用过滤器,调用过滤器比编写那些冗长而重复的查询方法更加便捷,可读性也更好。从调用方式或者过滤器的作用范围来说,可以把「作用域」分为「全局...

weixin_42499444的博客 275

都是laravel中的scope搞的鬼

301篇(以后博客篇数写到正文里面了) 如果有一天碰到一个没有见过的调用方法,注意这个吧! 还有一篇文章,laravel中的scope作用域

phpstory的博客 203

Laravel 10模型Scope进阶应用:构建高性能应用的密钥(仅限资深开发者)

掌握Laravel 10模型作用域Scope)的高级技巧,提升查询复用性与应用性能。适用于复杂业务筛选、多条件组合查询等场景,通过静态方法封装常用逻辑,增强代码可读性与维护性。资深开发者进阶必备,值得收藏。

QuickDebug的博客 718

Laravel5.1 模型--查询作用域

查询作用域--scope laravel的模型是允许我们把一些常用的查询语句封装成方法的,这样也方便了我们的调用,不需要每次都要写条件语句,下面我们来看看这个scope的语法: 首先打开模型文件 添加这个方法: // 创建scope方法 public function scopeAsk($query){ // 查找作者为ASK的所有文章数据 ...

121
上一篇: Laravel 使用手动认证用户,解决数据库字段不是 password
下一篇: 高并发架构相关概念
curioust
博客等级 码龄8年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值