国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使Laravel篩選查詢更優雅的插件l5-repository

chuyao / 3231人閱讀

摘要:是一個優雅的框架,但并不代表你寫的業務代碼也同樣優雅。這里提到了兩個插件,主要介紹下后者,改動的部分可以很好支持此插件。控制器控制器方面只需簡單的行即可,插件會解析請求參數,但是解析的是特定形式的查詢參數,如。

Laravel是一個優雅的框架,但并不代表你寫的業務代碼也同樣優雅。
你的代碼中是否還存在如下類似代碼:

//是否綁定
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"]);
    });
}

當業務需求要加多個查詢條件的時候,往往需要改前端頁面和后端頁面,前端加input框,后端加if條件。

本文分享下l5-repository(原作者) / l5-repository(本文作者改后)插件,ps:雖然目前原作者已不維護了,不過貌似招了些自愿者去維護,不影響基本使用。這里提到了兩個l5插件,主要介紹下后者,改動的部分可以很好支持此插件。

repository模式

此插件實現了repository層,業務邏輯相關的代碼放在repository中實現,所有的repository繼承公共repository,公共repository繼承PrettusRepositoryEloquentBaseRepository,repository模式不了解的點這里。

控制器

控制器方面只需簡單的2行即可,插件會解析請求參數,但是解析的是特定形式的查詢參數,如: /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();
}
視圖

視圖方面原作者只是舉了幾個例子,并沒提供相關js去拼成后端識別的格式,所以想依靠控制器兩行代碼簡化查詢還得做些工作,本文作者不忍心這插件由于這點瑕疵而棄用,于是自己fork了個然后寫了一坨jquery去支持它。于是,視圖代碼如下即可:

{{-- 搜索本表的user_name字段 data-search-type="like":模糊搜索 --}}

{{-- 搜索關聯表的聯系電話字段 --}}

{{-- 創建區間查詢 created_at between "2018-01-01" and "2018-01-17" --}}

寫的那段jquery便可自動將表單參數拼成l5-repositoy識別的格式,后續加新的篩選條件只要前端加input即可。

結語

第一次分享技術文,有寫的不到位的地方歡迎指出,謝謝~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28166.html

相關文章

  • 下載量最高「50 」個 Laravel 擴展包

    摘要:簡介另一個令人喜歡的地方,是擁有活躍的開發者社區,而活躍的開發者社區帶來的,是繁華的擴展包生態該項目統計了目前下載量最高的個擴展包。記得喲相信下面這些擴展包會讓你的編碼更加高效。排名下載量排名包地址下載次數描述圖片處理。 簡介 Laravel 另一個令人喜歡的地方,是擁有活躍的開發者社區,而活躍的開發者社區帶來的,是繁華的擴展包生態 ———— @Summer 該項目統計了目前 pack...

    liaorio 評論0 收藏0
  • Laravel Telescope:優雅應用調試工具

    摘要:文章轉自視頻教程優雅的應用調試工具新擴展是由和開源的應用的調試工具。計劃任務列出已運行的計劃任務。該封閉函數會被序列化為一個長字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉自:https://laravel-china.org/topics/19013視頻教程:047. 優雅的應用調試工具--laravel/telesco...

    MasonEast 評論0 收藏0
  • 2015 年度小結(技術方面)

    摘要:因為路由層面受業務影響很大,經常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發現中文網絡上對的討論非常分散,于是我創建了中文社區,到年末已經有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發的一個互聯網金融項目終于在今年三月份上線了,這是一個 Node...

    宋華 評論0 收藏0
  • 2015 年度小結(技術方面)

    摘要:因為路由層面受業務影響很大,經常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發現中文網絡上對的討論非常分散,于是我創建了中文社區,到年末已經有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發的一個互聯網金融項目終于在今年三月份上線了,這是一個 Node...

    Nosee 評論0 收藏0
  • Laravel關聯模型中過濾結果為空結果集(has和with區別)

    摘要:但有些結果不是我想要的注意返回了為空的數據記錄中有的有記錄,有的為空。它會有兩條查詢,第一條查主數據,第二條查關聯,這里第二條如下如果第二條為空,主記錄的關聯字段就是。 首先看代碼: $userCoupons = UserCoupons::with([coupon => function($query) use($groupId){ return $query->select(...

    Songlcy 評論0 收藏0

發表評論

0條評論

chuyao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<