鍍金池/ 問答/PHP  數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ 請(qǐng)教,PHP 關(guān)于多重篩選結(jié)果分頁的問題。

請(qǐng)教,PHP 關(guān)于多重篩選結(jié)果分頁的問題。

最近正在寫一個(gè)訂單管理功能的模塊,基于PHP 7.1的,在做訂單列表篩選顯示的時(shí)候,想做分頁顯示,不過現(xiàn)在感覺沒什么思路,原因在于訂單列表篩選的方式維度太多, 比如需要按照各種日期匹配,時(shí)間匹配,狀態(tài)查詢,貨運(yùn)信息查詢,訂單明細(xì)查詢…… 不一一列舉,所有篩選出來的結(jié)果都需要在中間的訂單列表div里做展示,請(qǐng)問, 現(xiàn)這種情況, 不同篩選條件篩選出來的結(jié)果怎樣在做分頁顯示代碼寫起來會(huì)比較少冗余呢? 以及點(diǎn)擊下一頁該執(zhí)行的查詢應(yīng)當(dāng)如何判定呢?
謝謝。

回答
編輯回答
囍槑

第一個(gè)問題不太明晰。對(duì)于第二個(gè)問題,點(diǎn)擊下一頁后,前端通過js代碼得到 篩選條件以及下一頁對(duì)應(yīng)的頁碼值,生成 篩選參數(shù)以及頁碼參數(shù) 通過 get請(qǐng)求或其他請(qǐng)求 來訪問后臺(tái),后臺(tái)通過附帶的 篩選參數(shù)以及頁碼參數(shù) 拼接出select語句 進(jìn)行下一頁的查詢(通過limit關(guān)鍵字實(shí)現(xiàn)分頁的查詢)。

2018年4月10日 07:38
編輯回答
熊出沒

這里就要安利下laravel框架的l5-repository插件的強(qiáng)大之處了。

后端

后端只需2行代碼即可完成篩選功能(包括后期可能新增的篩選條件,后端都不用改)
圖片描述

前端

前端加篩選條件只要定義好模型關(guān)系,想篩選什么字段就篩選什么字段(包括不是本表的字段),類似寫法如下:
圖片描述order_sn是當(dāng)前表從order表冗余過來的,但是又提個(gè)需求想搜索order表的其他字段dealer_id(前期沒有冗余進(jìn)來),只要order.dealer_id即可,其中order為這兩表之間的關(guān)系。

DB

他生成的sql語句類似:select count(*) as aggregate from distributor_commision where (exists (select * from order where distributor_commision.order_sn = order.order_sn and dealer_id = '111'))

是不是很方便,底層實(shí)現(xiàn)原理就是解析前端name值,然后在模型里加where條件,具體可看看他源碼。

2017年5月4日 21:15