Ι有一个“产品”表,其中包含有关产品的一般信息:
id
name
price
我还有一个“ProductViewCount”表,其中包含每个产品的观看次数,并在每天开始时开始新的计数:
id
product_id
date
count
如何以允许我搜索产品的方式构建实体,然后在任何给定的日期(如果存在)访问该产品的计数?
答案 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);
}
}
然后,您可以在视图图层中安排自己的喜好。