laravel 獲取id在某數組中的數據並根據數組進行排序(FIND_IN_SET)

  1. 獲得我們需要的數組
        $user_id = User_::getMyId();
        $department_id = DB::table('user')->where('id',$user_id)->value('department_id');
        $parent_id = DB::table('department')->where('id',$department_id)->value('parent_id');
        $ids = array();
        array_push($ids,$department_id);
        if($parent_id == '0' || $parent_id == '567'){
            $arr = DB::table('department')->where('parent_id',$department_id)->pluck('id');
            $arr = $arr->toArray();
            if(!empty($arr)){
                foreach ($arr as $k => $v) {
                   array_push($ids, $arr[$k]);
                   $arr2[$k] = DB::table('department')->where('parent_id',$arr[$k])->pluck('id');
                   $arr2[$k] = $arr2[$k]->toArray();
                   if(!empty($arr2[$k])){
                        foreach ($arr2[$k] as $key => $value) {
                            array_push($ids, $arr2[$k][$key]);
                        }
                   }
                }
            }
        }

得到數組,例如[3,1,2,4,7,8];
2.根據獲得數組查詢需要的數據

        $Obj = Department::with($with);
        if($parent_id == '0' || $parent_id == '567'){
            $Obj->whereIn('id',$ids);
        }else{
            $Obj->where('id', $department_id);
        }

獲得 id在$ids數組中的數據 使用whereIn查詢
3.根據數組中元素的順序進行排序

        if($parent_id == '0' || $parent_id == '567'){
            $Obj->orderBy(\DB::raw('FIND_IN_SET(id, "' . implode(",", $ids) . '"' . ")"));

        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章