我有三个表格 - categories
,products
和category_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;
}
有什么想法吗?谢谢!