2014-01-06 192 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); 
    } 
} 

然後,您可以安排你如何在視圖層喜歡。