public function actionIndex($id)
 {
     $thread = Tree::findOne((int) $id);
     if (!$thread) {
         return $this->redirect('/');
     }
     $tree = new Tree();
     $data = $tree->buildTree($thread);
     return $this->render('index', ['jsonString' => $data, 'id' => $id]);
 }
示例#2
0
 /**
  * generate tree
  * @param $count
  * @param null $parent_id
  */
 public function generateTree($count, $parent_id = null)
 {
     $tree = Yii::$app->mongodb->getCollection('tree');
     if ($parent_id) {
         $thread = Tree::findOne($parent_id);
         $key = $thread->right_key;
         $level = $thread->level + 1;
     } else {
         $key = Tree::find()->max('right_key');
         $key++;
         $level = 0;
     }
     $id = $this->getLastId();
     for ($i = 0; $i < $count; $i++, $id++, $key += 2) {
         if ($parent_id) {
             $tree->update(['left_key' => ['$gt' => $key]], ['$inc' => ['right_key' => 2, 'left_key' => 2]]);
             $tree->update(['right_key' => ['$gte' => $key], 'left_key' => ['$lt' => $key]], ['$inc' => ['right_key' => 2]]);
         }
         $tree->insert(['left_key' => $key, 'right_key' => $key + 1, 'name' => $id, 'level' => $level, '_id' => $id]);
     }
 }