2010-07-20 7 views
1

J'ai un modèle de produit avec 2 plusieurs à plusieurs relations définies.Kohana 3 ORM: Comment effectuer une requête avec 2 relations plusieurs à plusieurs

protected $_has_many = array 
(
'foodcats' => array('model' => 'foodcat', 'through' => 'products_foodcats'), 
'foodgroups' => array('model' => 'foodgroup', 'through' => 'products_foodgroups') 
) 

J'ai besoin d'une requête où je trouve des produits avec un identifiant foodcat donné et un nom de groupe alimentaire donné. Je sais que je peux faire ce qui suit pour obtenir tous les produits avec un id foodcat donné

$foodcat = ORM::factory('foodcat',$foodCatId); 
$products = $foodcat->products->find_all(); 

Mais comment puis-je interroger des produits qui en foodcat qui sont également dans le FoodGroup « Entrees »?

Merci!

Répondre

0

Simplement; tu ne le fais pas. Ce dont vous avez besoin est INNER JOIN, comme;

ORM::factory('product') 
->join('foodcats','INNER') 
->on('foodcats.id','=',$foodcats_id) 
->join('foodgroups','INNER') 
->on('foodgroups.name','=',$foodgroups_name) 
->find_all(); 
0

dans Kohana 3.1 sans utiliser DB::expr, donnera erreur de colonne inconnue.

ORM::factory('product') 
->join('foodcats','INNER') 
->on('foodcats.id','=', DB::expr($foodcats_id)) 
->join('foodgroups','INNER') 
->on('foodgroups.name','=', DB::expr($foodgroups_name)) 
->find_all(); 
Questions connexes