2013-01-12 25 views
0

我想使用Collection#匹配相關聯的對象,但它不起作用。做一些挖掘它看起來像教條做in_array呼籲這兩個價值觀。針是一個堅持收集(我的協會),乾草堆是我想匹配的實體陣列。由於針是一個持久收集,所以匹配失敗。收藏#匹配原則中的關聯

這可能是一個錯誤或不支持關聯?如果他們不被支持,是否有解決方法?

實施例:

$query = $em->createQuery("SELECT c FROM Entity\BidCategory c WHERE c.code IN(:categories)"); 
$query->setParameter('categories', array('CATEGORY_1', 'CATEGORY_2')); 
$my_categories = $query->getResult(); 

$criteria = array(
"min_pub_date" => "01-07-2012", 
"max_pub_date" => "01-08-2012" 
); 

$query = $em->createQuery("SELECT b From Entity\Bid b JOIN b.categories c WHERE b.pub_date > :min_pub_date AND b.pub_date < :max_pub_date"); 
$query->setParameter("min_pub_date", new DateTime($criteria['min_pub_date'])); 
$query->setParameter("max_pub_date", new DateTime($criteria['max_pub_date'])); 
$query->setMaxResults(1); 
$bids = $query->getResult(); 

$criteria = Criteria::create() 
->where(Criteria::expr()->in("categories", $my_categories)); 

$collection = new Doctrine\Common\Collections\ArrayCollection(); 
foreach($bids as $bid) 
{ 
    $collection->add($bid); 
} 
$matched_bids = $collection->matching($criteria); 

回答

0

的標準功能不支持的關聯。 Criteria::expr()->in()方法適用於常規數組。