2013-07-11 45 views
0

我是新的Symfony2,我想知道是否有一種方法來使用「findBy」與只出現在映射實體中的param。Symfony 2「findBy」一個映射的實體參數到控制器

這是我的片斷控制器:

$prods = $em->getRepository('EcommerceProductBundle:ProductData') 
    ->findBy(array(
     'product_id'=>46 
    )); 

它的工作不錯,但如果我嘗試另一個元素添加到陣列,這是目前在映射的實體,它得到(正確地)這個錯誤

Unrecognized field: ProductImage.is_visible 

我想要做的,只是要知道wehether我可以使用「filterBy」與實體ProductData的映射元素。

我在錯的,但是這是我的想法:

->findBy(array(
    'product_id'=>46, 
    'ProductImage.is_visible'=>1  
)); 

回答

0

你不能做到這一點,你需要寫一個聯接子句在倉庫中的自定義方法。

findBy方法只是在條件中添加一個where子句。

0

據我所知,不可能。只需將此自定義方法添加到您的存儲庫:

public function findByIdAndVisibleImage($id) 
{ 
    return $this->createQueryBuilder('product') 
     ->lefJoin("product.image","i") 
     ->where("product.product_id = :id") 
     ->andWhere("i.is_visible = 1") 
     ->setParameter("id", $id) 
     ->getQuery() 
     ->getSingleResult(); 
} 
+0

是的,我已經寫了一個自定義查詢,但我想知道如果沒有它可能。 無論如何,謝謝。 –

相關問題