添加两个模型类

时间:2013-08-01 12:19:24

标签: yii

在Category Model中,getAll方法用于返回所有类别数据。以下方法中的第一个活动记录$ roots具有所有根类别,而$ category具有根类别的后代类别。如何添加这两个类别。以下是getAll方法:

   public function getAll()
    {
      $roots = Category::model()->roots()->findAll();
      foreach($roots as $root)
      {
        $category = Category::model()->findByPk($root->root);   
        $categories = $category->descendants()->findAll();
      }
      return $category + $categories;  // this does not concatenate, causes error   
    }

1 个答案:

答案 0 :(得分:2)

这里有两个问题:

  1. 您只会获得表中最后一个根的categorydescendants,因为foreach循环每次都会覆盖变量。为防止出现这种情况,您需要制作$categoriy$categories数组,并指定$category[] = ...$categories[] = ...。或者更好的是你可以在循环结束时将它们合并到一个复合数组中。也许是这样的:

    foreach($roots as $root)
      {
        $category = Category::model()->findByPk($root->root);   
        $categories[] = $category;
        $categories = array_merge($categories, $category->descendants()->findAll());
      }
    return $categories;
    

    现在有一个存储为根类别的所有根和后代类别的数组,然后是它的后代,然后是下一个根类别,然后是它的后代等。

  2. $category是写入的Category对象,$categoriesdescendants()的数组。我希望这些也是Category个对象。但是你不能将一个对象与一个数组连接起来,你必须使用array_merge(),参见上面的例子。