thinkphp 5はすべての子を再帰的にクエリーし、親をクエリーし、階層を取得します.
1054 ワード
function get_childs( $parent_id = array(), $level = 0 ){
static $id_arr = array();
$id_arr= Db::name('users')->where('parent_id','in',$parent_id)->column('id');
// 3
if (!empty($id_arr)&& $level<3) {
$level++;
$id_arr=array_merge($id_arr,get_childs($id_arr,$level));
}
return $id_arr;
}
public function getParent( $pid ,$array=[]) {
static $level = 1;
$is_parent = Db::name( 'Users')->where(["id"=>$pid])->find();
$array[] = $is_parent;
if ( $is_parent["reid"] ) {
$level++;
return $this->getParent( $is_parent['reid'],$array);
}
return $array;
}
//
$userInfo = Db::name('Users')->where('id',10)->find();
if ($userInfo['reid']>0) {
$this->getParent($userInfo['reid']);
}