laravel 多條件結合scope查詢作用域優化

2021-09-24 22:54:01 字數 2127 閱讀 7326

在很多情況下,列表資料都需要篩選,比如訂單資料列表,可能根據前台傳的訂單狀態,使用者郵箱等條件進行篩選,通常我們的**如下:

$orders_handler

= order:

:query()

;//篩選條件if(

$request

->

get(

'status',''

))if(

$params

['shipment_status'])

}...

..

最重要的是這種篩選條件可能根據需求不斷的新增...

那麼我們是否可以優化這種情況呢…

首先我們先建乙個說有過濾條件條件的基類:

基類的位置同學們可以隨便放,我是新建目錄filter

這次我們主要以過濾訂單列表資料作為例子,建立orderfilter繼承basequeryfilter

orderfilter:

<?php

/** * created by phpstorm.

* user: szjls

* date: 2019/7/2

* time: 19:00

*/namespace

;use

;class

orderfilter

extends

basequeryfilter%")

;}public

function

paymethod

($pay_method

)return

$this

->

builder;}

...}

接下來就是應用了,在ordermodel 裡建立查詢作用域,注入basequeryfilter 進行查詢過濾

ordermodel:

public

function

scopefilter

($query

,basequeryfilter $filter

)

ordercontroller:

public

function

__construct

(orderrepository $repository

)public

function

index

(orderfilter $filter

)

orderrepository:

public

function

getorderlist

(orderfilter $filter

)else

;return

$handle

->

orderby

('created_at'

,'desc')-

>

paginate()

;}

如上我們就應用scope 作用於對多條件查詢進行了優化,使**看起來更優雅

以上實現都是基於mongodb的,所以有些資料看起來不怎麼合適

nginxif多條件結合判斷(實現限速)

參考文章 需求 要對某一ip下,使用android客戶端的使用者進行限速 原理 就是用set變數進行。and 就用變數疊加,or就用0或1切換。nginx的配置中不支援if條件的邏輯與 邏輯或運算 並且不支援if的巢狀語法,我們可以用變數的方式來實現 需要兩個變數 test1,test2 test1...

laravel5中模糊匹配加多條件

方法1 orm模式 public function reportaccurate data else 多條件模糊 public function whereall data get return results 上面的 data為前端傳過來的陣列 利用封裝拼接進行模糊或者精確的多條件搜素 不好的地方...

多條件查詢

思路 1.獲取引數值 2.生成查詢條件 3.獲取查詢結果 4.繫結查詢選項 呼叫geturlhtml方法生成查詢url 例如 var y2013 pnvshihufu qbeijing sxuhuiqu 得到url變數值 protected string geturlval string name ...