Frage:
Der Code lautet wie folgt:
<code> //查找所有下级部门的id public static function actionSon($company_id,$id) { global $temp; $modelClass = self::find() ->where(['parent_id'=>$id,'company_id'=>$company_id]) ->all(); if(!empty($modelClass)){ foreach ($modelClass as $k => $value) { $temp[] =$value->id; self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级 } } return $temp; } </code>
<code>fields里面调用 public function fields() { return [ 'id', 'company_id' 'user_count'=>function(){ // return $this->getUserCount(); $dep_ids=self::actionSon($this->company_id,$this->id); // $GLOBALS['temp']=[]; //unset($temp); print_r($dep_ids); }, ]; }</code>
Ergebnisausgabe:
Wenn es Abteilungen in der Liste gibt, werden diese für immer wiederholt.
Das Ergebnis, das ich brauche, besteht darin, bei jedem Aufruf die IDs aller Unterabteilungen der aktuellen Abteilung abzurufen und sie in Form eines eindimensionalen Arrays anzuzeigen.
Lassen Sie $GLOBALS['temp']=[] los, um nur eine Ebene zu finden.
Frage:
Der Code lautet wie folgt:
<code> //查找所有下级部门的id public static function actionSon($company_id,$id) { global $temp; $modelClass = self::find() ->where(['parent_id'=>$id,'company_id'=>$company_id]) ->all(); if(!empty($modelClass)){ foreach ($modelClass as $k => $value) { $temp[] =$value->id; self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级 } } return $temp; } </code>
<code>fields里面调用 public function fields() { return [ 'id', 'company_id' 'user_count'=>function(){ // return $this->getUserCount(); $dep_ids=self::actionSon($this->company_id,$this->id); // $GLOBALS['temp']=[]; //unset($temp); print_r($dep_ids); }, ]; }</code>
Ergebnisausgabe:
Wenn es Abteilungen in der Liste gibt, werden diese für immer wiederholt.
Das Ergebnis, das ich brauche, besteht darin, bei jedem Aufruf die IDs aller Unterabteilungen der aktuellen Abteilung abzurufen und sie in Form eines eindimensionalen Arrays anzuzeigen.
Lassen Sie $GLOBALS['temp']=[] los, um nur eine Ebene zu finden.