摘要:是一個(gè)優(yōu)雅的框架,但并不代表你寫的業(yè)務(wù)代碼也同樣優(yōu)雅。這里提到了兩個(gè)插件,主要介紹下后者,改動(dòng)的部分可以很好支持此插件。控制器控制器方面只需簡(jiǎn)單的行即可,插件會(huì)解析請(qǐng)求參數(shù),但是解析的是特定形式的查詢參數(shù),如。
Laravel是一個(gè)優(yōu)雅的框架,但并不代表你寫的業(yè)務(wù)代碼也同樣優(yōu)雅。
你的代碼中是否還存在如下類似代碼:
//是否綁定 if (isset($param["bind"]) and $param["bind"] != "-1") { $t = $param["bind"] == 1 ? "!=" : "="; $rs = $rs->where("user_id", $t, 0); } //是否激活 if (isset($param["active_time"]) and $param["active_time"] != "-1") { $t = $param["active_time"] == 1 ? ">=" : "<"; $rs = $rs->where("active_time", $t, "1999-01-01"); } if (isset($param["dealer"]) && !empty($param["dealer"])) { $rs = $rs->whereHas("dealer", function ($query) use ($param) { $query->where("name", "like", "%".$param["dealer"] . "%") ->orWhere("dealer_id", "=", $param["dealer"]); }); }
當(dāng)業(yè)務(wù)需求要加多個(gè)查詢條件的時(shí)候,往往需要改前端頁面和后端頁面,前端加input框,后端加if條件。
本文分享下l5-repository(原作者) / l5-repository(本文作者改后)插件,ps:雖然目前原作者已不維護(hù)了,不過貌似招了些自愿者去維護(hù),不影響基本使用。這里提到了兩個(gè)l5插件,主要介紹下后者,改動(dòng)的部分可以很好支持此插件。
repository模式此插件實(shí)現(xiàn)了repository層,業(yè)務(wù)邏輯相關(guān)的代碼放在repository中實(shí)現(xiàn),所有的repository繼承公共repository,公共repository繼承PrettusRepositoryEloquentBaseRepository,repository模式不了解的點(diǎn)這里。
控制器控制器方面只需簡(jiǎn)單的2行即可,插件會(huì)解析請(qǐng)求參數(shù),但是解析的是特定形式的查詢參數(shù),如: /users?search=user_name:133;created_at:2018-01-01,2018-01-17&searchFields=user_name:like;created_at:between。
public function index(Request $request) { $this->userRepository->pushCriteria(new RequestCriteria($request)); $users= $this->userRepository->paginate(); }視圖
視圖方面原作者只是舉了幾個(gè)例子,并沒提供相關(guān)js去拼成后端識(shí)別的格式,所以想依靠控制器兩行代碼簡(jiǎn)化查詢還得做些工作,本文作者不忍心這插件由于這點(diǎn)瑕疵而棄用,于是自己fork了個(gè)然后寫了一坨jquery去支持它。于是,視圖代碼如下即可:
{{-- 搜索本表的user_name字段 data-search-type="like":模糊搜索 --}} {{-- 搜索關(guān)聯(lián)表的聯(lián)系電話字段 --}} {{-- 創(chuàng)建區(qū)間查詢 created_at between "2018-01-01" and "2018-01-17" --}}
寫的那段jquery便可自動(dòng)將表單參數(shù)拼成l5-repositoy識(shí)別的格式,后續(xù)加新的篩選條件只要前端加input即可。
結(jié)語第一次分享技術(shù)文,有寫的不到位的地方歡迎指出,謝謝~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28166.html
摘要:簡(jiǎn)介另一個(gè)令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來的,是繁華的擴(kuò)展包生態(tài)該項(xiàng)目統(tǒng)計(jì)了目前下載量最高的個(gè)擴(kuò)展包。記得喲相信下面這些擴(kuò)展包會(huì)讓你的編碼更加高效。排名下載量排名包地址下載次數(shù)描述圖片處理。 簡(jiǎn)介 Laravel 另一個(gè)令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來的,是繁華的擴(kuò)展包生態(tài) ———— @Summer 該項(xiàng)目統(tǒng)計(jì)了目前 pack...
摘要:文章轉(zhuǎn)自視頻教程優(yōu)雅的應(yīng)用調(diào)試工具新擴(kuò)展是由和開源的應(yīng)用的調(diào)試工具。計(jì)劃任務(wù)列出已運(yùn)行的計(jì)劃任務(wù)。該封閉函數(shù)會(huì)被序列化為一個(gè)長(zhǎng)字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉(zhuǎn)自:https://laravel-china.org/topics/19013視頻教程:047. 優(yōu)雅的應(yīng)用調(diào)試工具--laravel/telesco...
摘要:因?yàn)槁酚蓪用媸軜I(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測(cè)試都是針對(duì)層面的單元測(cè)試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對(duì)的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個(gè)注冊(cè)用戶和個(gè)帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個(gè)互聯(lián)網(wǎng)金融項(xiàng)目終于在今年三月份上線了,這是一個(gè) Node...
摘要:因?yàn)槁酚蓪用媸軜I(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測(cè)試都是針對(duì)層面的單元測(cè)試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對(duì)的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個(gè)注冊(cè)用戶和個(gè)帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個(gè)互聯(lián)網(wǎng)金融項(xiàng)目終于在今年三月份上線了,這是一個(gè) Node...
摘要:但有些結(jié)果不是我想要的注意返回了為空的數(shù)據(jù)記錄中有的有記錄,有的為空。它會(huì)有兩條查詢,第一條查主數(shù)據(jù),第二條查關(guān)聯(lián),這里第二條如下如果第二條為空,主記錄的關(guān)聯(lián)字段就是。 首先看代碼: $userCoupons = UserCoupons::with([coupon => function($query) use($groupId){ return $query->select(...
閱讀 632·2021-08-17 10:15
閱讀 1715·2021-07-30 14:57
閱讀 1971·2019-08-30 15:55
閱讀 2813·2019-08-30 15:55
閱讀 2704·2019-08-30 15:44
閱讀 662·2019-08-30 14:13
閱讀 2380·2019-08-30 13:55
閱讀 2588·2019-08-26 13:56