返回顶部
首页 > 资讯 > 精选 >Pipeline如何处理Laravel多条件查询
  • 693
分享到

Pipeline如何处理Laravel多条件查询

2023-06-26 05:06:24 693人浏览 独家记忆
摘要

本篇内容介绍了“Pipeline如何处理Laravel多条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!pipeline是Larave

本篇内容介绍了“Pipeline如何处理Laravel多条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

pipeline是Laravel 特别有用的特性之一。 pipeline也是 Laravel 中最常用的组件之一,例如中间件

One of the features of Laravel which surely useful is the pipeline. Pipelines is one of the most used components in the Laravel for example middleware.

基本上,通过管道,我们可以通过任务堆栈传递对象,并通过回调获得结果。

Basically, with a pipeline we can pass an object through a stack of tasks and get the result via a callback.

管道用于查询过滤的好处是我们可以将成吨的屎山减少到几行。 没用管道之前,我们通常会写一个控制器,获取用户模型的 Eloquent 实例,并根据查询字符串拼接一些条件。

The benefit of pipeline for query filtering is that we can reduce tons of lines to several lines. Being unaware of the pipelines, we would usually set up a controller, get an instance of Eloquent of User model, and apply some condition based on query string.

让我们看看下面的屎山查询大法。

Let’s see below queries.

$query = User::query();if ($request->username) {    $query->where('username', 'LIKE', "%$request->username%");}if ($request->email) {    $query->where('email', 'LIKE', "%$request->email%");}if ($request->address) {    $query->where('address', 'LIKE', "%$request->address%");}if ($request->occupation) {    $query->where('occupation', 'LIKE', "%$request->occupation%");}return $query->get();

缺点很明显,过滤条件像屎山一样不断的堆加,出现大量重复的代码。 另外,代码的可维护性就有点脑壳疼了。

The drawback is that, it’s obviously that filters conditions will continue to grow as well as duplication of the same filter for other query. In other hand, the maintainability of the code kind of headache.

来看看管道优雅的处理方式
There is where Pipeline become a hero

return User::query()->filter([     UsernameFilter::class,    EmailFilter::class,    AddressFilter::class,    OccupationFilter::class])->get();

简单而简短吧?看看下面的步骤

Simple and short right? But before that,

创建一个名为“Filterable”的trait类并写一个scope方法

  1. Create a trait named Filterable and create a scope

class Filterable{        public function scopeFilter($query, array $through)       {                    return app(Pipeline::class)                   ->send($query)                               ->through($through)                               ->thenReturn();           }}

然后,你就可以愉快的在任意Model中复用它,如User模型

Then, use it in any model that you prefer, for example User model

class User {    use Filterable; }

创建一个Filter,例如UsernameFilter

Create a filter for example UsernameFilter

class UsernameFilter {    public function handle($query, $next)    {                if (request()->mobile_phone) {                      $query->where('username', request()->mobile_phone);              }                 return $next($query);      }}

食用方法:

The usage is just like this

User::query()->filter([UsernameFilter::class])->get();

或者

OR

你还可以通过传递属性的方式来使用管道。

If you want for more accessibility to the pipeline, you can also pass an attribute.

class StringFilter {    public function handle($query, $next, $column) {        if (request()->{$column}) {                       $query->where($column, 'LIKE', request()->{$column});              }         return $next($query);     }}

像下面这样用

The usage is just like this

User::query()->filter([   'StringFilter:username',   'StringFilter:email',])->get();

“Pipeline如何处理Laravel多条件查询”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Pipeline如何处理Laravel多条件查询

本文链接: https://lsjlt.com/news/306788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Pipeline如何处理Laravel多条件查询
    本篇内容介绍了“Pipeline如何处理Laravel多条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!pipeline是Larave...
    99+
    2023-06-26
  • 如何实现多条件查询
    这篇文章主要讲解了“如何实现多条件查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现多条件查询”吧! 而在对用户进行查...
    99+
    2024-04-02
  • mysql多个条件如何查询
    这篇文章主要讲解了“mysql多个条件如何查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql多个条件如何查询”吧! 方...
    99+
    2024-04-02
  • Bootstrap中如何处理树列表条件和查询条件
    这篇文章将为大家详细讲解有关Bootstrap中如何处理树列表条件和查询条件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Boostrap框架中,很多地方需要使用bootstrapTable表格插件和j...
    99+
    2023-06-15
  • Layui如何实现多条件查询
    这篇文章主要介绍了Layui如何实现多条件查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做一个档案系统,发现字段超多带分页的多条件查询(分页需要后端分页,传page给...
    99+
    2023-06-25
  • sql多条件查询如何优化
    优化 SQL 多条件查询可以通过以下几个方面来实现:1. 索引优化:确保查询涉及的字段都有相应的索引。可以使用 EXPLAIN 或者...
    99+
    2023-08-22
    sql
  • MongoDB多条件查询
    1.查看集合 show collections2.向集合中添加数据 db.runoob.insertMany([ { 'title':'data1', 'u...
    99+
    2024-04-02
  • mysql怎么多条件查询
    在 mysql 中进行多条件查询有两种方法:使用 and 运算符:只在所有条件都满足时返回结果。使用 or 运算符:满足其中任何一个条件即可返回结果。 使用 MySQL 进行多条件查询...
    99+
    2024-04-02
  • mongodb如何带条件查询
    在MongoDB中,可以使用`find()`方法来执行带条件查询。以下是一些常见的带条件查询示例:1. 等于条件查询:```db.c...
    99+
    2023-09-04
    mongodb
  • sql多条件查询怎么写
    sql 多条件查询使用多个条件筛选数据。语法:select column1, column2, ... from table_name where condition...
    99+
    2024-05-30
  • SqlServer如何巧妙解决多条件组合查询
    今天就跟大家聊聊有关SqlServer如何巧妙解决多条件组合查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。开发中经常会遇得到需要多种条件组合查询...
    99+
    2024-04-02
  • mysql如何查询指定条件
    这篇“mysql如何查询指定条件”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“mysql如何查询指定条件”,小编整理了以下知识点...
    99+
    2024-04-02
  • mongodb如何查询时间条件
    在 MongoDB 中,您可以使用 `$gt`、`$lt`、`$gte`、`$lte` 操作符来查询时间条件。这些操作符分别表示大于...
    99+
    2023-08-31
    mongodb
  • mybatisplus如何实现条件查询
    本篇内容介绍了“mybatisplus如何实现条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、wapper介绍用mp也可以方便的实...
    99+
    2023-06-30
  • SSH如何实现条件查询和分页查询
    这篇文章将为大家详细讲解有关SSH如何实现条件查询和分页查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、QueryHelper和PageResultQueryHel...
    99+
    2024-04-02
  • SpringDataJpa如何使用union多表分页条件查询
    目录如何使用union多表分页条件查询条件分页踩过的坑分享几个用到的mysql语法jpa执行原生sql union bug解决如何使用union多表分页...
    99+
    2024-04-02
  • 使用Mybatis如何实现多个控制条件查询
    目录实现多个控制条件查询扩展知识实现多个条件简单查询数据库的字段名和实体类的属性名不一致时实现多个条件复杂查询MyBatis条件查询总结1.if条件语句2.choose(whenot...
    99+
    2024-04-02
  • 使用JPA+querydsl如何实现多条件动态查询
    目录JPAquerydsl多条件动态查询介绍一下querydsl看源码springdataJPA和querydsl什么是SpringDataJPA?什么是QueryDSL?@Mapp...
    99+
    2024-04-02
  • mongodb如何查询有多少条数据
    在mongodb中可以使用count()方法查询表中记录条数,mongodb查询有多少条数据的语句写法:“db.users.find().count();”,这里的users指的数据库的表名。以 test 数据库、trainers 集合为例...
    99+
    2024-04-02
  • sql如何批量查询多条数据
    要批量查询多条数据,可以使用SQL中的IN关键字来实现。IN关键字用于指定一个值列表,从中选择值匹配的行。以下是一个示例: SELE...
    99+
    2024-04-12
    sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作