fastadmin關(guān)聯(lián)字段的顯示及篩選

當在使用fastadmin快速開發(fā)項目時幻件,往往需要關(guān)聯(lián)數(shù)據(jù)表控淡。但是在關(guān)聯(lián)數(shù)據(jù)后進行篩選時逸雹,經(jīng)常出現(xiàn)字段沖突的問題,所以封裝了個小方法解決字段沖突俐镐。

封裝一個修改字段的方法

    
    /*
    * 修改篩選請求字段名稱
    * @param String $old 請求的字段名稱
    * @param String $new 需要修改的字段名稱
    */
    public function changeName($old, $new)
    {
        $f = json_decode($_GET['filter'], true);
        // @符屏蔽錯誤矫限,偷懶沒寫驗證
        @$s = $f[$old];

        $res = [];
        if ($s != '') {
            unset($f[$old]);
            $f[$new] = $s;
            $_GET['filter'] = json_encode($f);
        }

        $res["filter"] = json_encode($f);

        $f = json_decode($_GET['op'], true);
        @$s = $f[$old];

        if ($s != '') {
            unset($f[$old]);
            $f[$new] = $s;
            $_GET['op'] = json_encode($f);
        }

        $res["op"] = json_encode($f);
        $this->request->get($res);
    }

修改application/common/controller/Backend.php中426行左右的地方(因為修改字段名稱的思路中添加了表名,所以在篩選日期的時候[比如通用字段createtime]京革,這個地方的分割會出現(xiàn)錯誤)

    if ($arr[0] === '') {
        $sym = $sym == 'RANGE' ? '<=' : '>';
        $arr = $arr[1];
    } elseif ($arr[1] === '') {
        $sym = $sym == 'RANGE' ? '>=' : '<';
        $arr = $arr[0];
    }
    $tableArr = explode('.', $k);
    // 以上是自帶的代碼
    // 這里添加一個處理
    if (count($tableArr) > 1) {
        $tableArr[0] = $tableArr[1];
        unset($tableArr[1]);
    }
    //結(jié)束
    //以下是自帶的代碼
    if (count($tableArr) > 1 && $tableArr[0] != $name && !in_array($tableArr[0], $alias) && !empty($this->model)) {
        //修復(fù)關(guān)聯(lián)模型下時間無法搜索的BUG
        $relation = Loader::parseName($tableArr[0], 1, false);
        $alias[$this->model->$relation()->getTable()] = $tableArr[0];
    }

復(fù)制 application/admin/library/traits/Backend.php 中的index方法到你的控制器奇唤,然后改寫它:

    public function index()
    {
        //設(shè)置過濾方法
        $this->request->filter(['strip_tags', 'trim']);
        if ($this->request->isAjax()) {
            //如果發(fā)送的來源是Selectpage,則轉(zhuǎn)發(fā)到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            
            // 此處將篩選請求中有爭議的字段"name"指定為tableA中的name
            $this->changeName("name", "a.name");

            list($where, $sort, $order, $offset, $limit) = $this->buildparams();

            // 假設(shè)tableA 和 tableB 中都有個name字段匹摇,tableA中的b_id關(guān)聯(lián)著tableB的主鍵id
            $list = $this->model
                ->alias("a")
                 // TP的關(guān)聯(lián)查詢
                ->join("tableB b", "a.b_id = b.id", "left")
                ->where($where)
                ->order($sort, $order)
                // 此處的bname渲染到j(luò)s中
                ->field("a.* , b.name as bname")
                ->paginate($limit);

            $result = array("total" => $list->total(), "rows" => $list->items());

            return json($result);
        }
        return $this->view->fetch();
    }

對應(yīng)的js中將字段渲染出來

...
// 生成的字段
// {field: 'b_id', title: __('b_id')},

// 修改為:
{field: 'bname', title: __('b_id')},
...

以上為自己慢慢研究出來的咬扇,雖然有些不規(guī)范,但是總算是解決了問題廊勃,用來快速開發(fā)外包小項目足夠用了懈贺!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坡垫,隨后出現(xiàn)的幾起案子梭灿,更是在濱河造成了極大的恐慌,老刑警劉巖冰悠,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堡妒,死亡現(xiàn)場離奇詭異,居然都是意外死亡溉卓,警方通過查閱死者的電腦和手機皮迟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桑寨,“玉大人伏尼,你說我怎么就攤上這事∥疚玻” “怎么了爆阶?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我辨图,道長班套,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任徒役,我火速辦了婚禮孽尽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忧勿。我一直安慰自己杉女,他們只是感情好,可當我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布鸳吸。 她就那樣靜靜地躺著熏挎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晌砾。 梳的紋絲不亂的頭發(fā)上坎拐,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天,我揣著相機與錄音养匈,去河邊找鬼哼勇。 笑死,一個胖子當著我的面吹牛呕乎,可吹牛的內(nèi)容都是我干的积担。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼猬仁,長吁一口氣:“原來是場噩夢啊……” “哼帝璧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起湿刽,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤的烁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诈闺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渴庆,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年雅镊,在試婚紗的時候發(fā)現(xiàn)自己被綠了把曼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡漓穿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出注盈,到底是詐尸還是另有隱情晃危,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站僚饭,受9級特大地震影響震叮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍鸵,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一苇瓣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偿乖,春花似錦击罪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至画切,卻和暖如春竣稽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霍弹。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工毫别, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人典格。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓岛宦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钝计。 傳聞我的和親對象是個殘疾皇子恋博,可洞房花燭夜當晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容