从Symfony / Doctrine中的半相关实体中检索信息

时间:2014-01-06 08:15:16

标签: symfony doctrine-orm

Ι有一个“产品”表,其中包含有关产品的一般信息:

id  
name  
price

我还有一个“ProductViewCount”表,其中包含每个产品的观看次数,并在每天开始时开始新的计数:

id  
product_id  
date  
count

如何以允许我搜索产品的方式构建实体,然后在任何给定的日期(如果存在)访问该产品的计数?

1 个答案:

答案 0 :(得分:0)

与@ Vardius的答案类似(很高兴他们有接受的答案),将ProductViewCount实体的关系定义为从Product到ProductViewCount的一对多,并在Product实体中使用ArrayCollection实例。

然后,向Product实体添加一个方法,假设ArrayCollection被命名为“viewCounts”:

public function addViewCount(ProductViewCount $viewCount)
{
    $this->viewCounts->add($viewCount);
}

然后,从您的控制器,其中$ countRepo是对ProductViewCountRepository的引用,$ products是您刚从ProductRepository获取的Product实体,$ date是要查询的日期:

$counts = $countRepo->findBy(array('product' => $products, 'date' => $date));
if ($counts) {
    foreach ($counts as $count) {
        $products[$count->getProductId()]->addViewCount($count);
    }
}

然后,您可以在视图图层中安排自己的喜好。