- 获得我们需要的数组
$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) . '"' . ")"));
}