实体类中的递归计数器

时间:2015-01-16 10:54:09

标签: php mysql symfony orm

我有三个表格 - categoriesproductscategory_product_mapper

类别形成一个看起来像树的结构,这意味着例如有一个id为1的大类,然后是子类,如3,5和7,每个子类都有自己的子类,所以它就像1 - 3 - [12, 51, 23]2 - 7 - [23, 44]

每个叶子类别都包含许多产品。每个产品都包含popularity列。我想要实现的是在类别实体中设置流行度属性,并在getter方法中计算它。

我看到的第一个问题是我必须在类别实体中使用doctrine实体管理器,以获取相应的产品和流行度信息。不知道该怎么做。

另一个问题是复发。类别表包含信息,如果它是一片叶子。如果是,我会计算此类别中的所有产品。但如果它不是叶子,我将不得不计算所有嵌套级别的产品低于此类别。我该怎么做?

所以有一个实体类:

class Categories {
  private $category_id;
  private $isLeaf;
  private $popularity; // popularity sum of all products in this category
  public function getPopularity() {
    if($this->isLeaf() == true)
    {
      // do something
    }
    else
    {
      // do something else
    }
  }
}

class Product {
  private $popularity;
}

class Category_Product_Mapper {
  private $product_id;
  private $category_id;
}

有什么想法吗?谢谢!

0 个答案:

没有答案