2014-01-06 142 views
0

Ι半相关实体检索信息有一个“产品”表,该表保存有关产品的基本信息:从Symfony的/学说

id 
name 
price 

我也有一个“ProductViewCount”表中持有的数量

id 
product_id 
date 
count 

我将如何构建实体的方式,让我来搜索产品,然后访问计数该产品:意见对每个产品,以新的计数在每一天的开始而开始在任何一天(如果存在)?

+2

一对多?你的产品有很多计数,你的计数只适用于一种产品。这是你要求的吗? – Vardius

+0

这是,但我很难理解我如何通过产品实体访问某个日期的计数。 – zcj

+1

您可以从您的产品'$ product-> getCounts();'获得计数实体,然后在计数实体上使用方法'FindByDate();'。 ''count = $ countRepo-> findOneBy(array('product'=> $ product,'date'=> $ date);'你也可以做这样的事情,因为它具有更好的可伸缩性,所以它是更好的方法。指定日期和产品的计数 – Vardius

回答

0

与@Vardius的答案类似(很高兴为他们提供接受的答案),请在产品实体中使用ArrayCollection实例将ProductViewCount实体与ProductViewCount中的一对多关系定义为ProductViewCount实例。

然后,添加一个方法,你的产品的实体,可以说一个ArrayCollection被评为“观看次数”:

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

然后,从控制器其中$ countRepo是您ProductViewCountRepository参考,$产品是产品实体您从ProductRepository和$日期只是牵强就是查询日期:

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

然后,您可以安排你如何在视图层喜欢。