2010-10-05 20 views
0

J'essaie de supprimer les relations d'un tableau croisé dynamique avec la méthode remove d'ORM. Ceci est pour une méthode d'édition qui met à jour les catégories associées à un produit. Je peux ajouter plusieurs relations avec succès, mais je dois supprimer ces relations avant de les ajouter à nouveau.Kohana 2.3.4 ORM - supprimer les relations de la table pivotante

Voilà comment je les ajoute

  foreach ($categories as $addCat) 
       { 
       $product->add(ORM::factory('category', $addCat)); 
       } 

catégories $ est un tableau d'éléments d'une forme et produit $ est le modèle. Cela fonctionne parfaitement.

Je pense que je dois faire quelque chose comme ça pour les enlever, mais il ne fonctionne pas

$product->remove(ORM::factory('category', $product->id)); 

id $ product-> est l'identifiant d'un produit. J'appelle ce script avant le script d'ajout. Mon but est de supprimer toutes les relations qui contiennent la valeur dans "$ product-> id" puis d'exécuter ma boucle pour les ajouter à nouveau. Je pourrais le faire facilement si je crée un modèle pour le tableau croisé dynamique, mais cela irait à l'encontre de l'utilisation de tableaux croisés dynamiques.

Répondre

2

Vous avez la bonne idée. Lorsque vous appelez ORM :: factory ('category', $ product-> id), vous essayez de trouver une catégorie avec le même identifiant que votre produit. Au lieu de cela, vous devez spécifier l'identifiant de la catégorie que vous voulez supprimer.

Supposons que vous avez un tableau des id de catégories que vous souhaitez supprimer:

$categories = array('2', '4', '6'); 
foreach ($categories as $cat_id) 
{ 
    $product->remove(ORM::factory('category', $cat_id)); 
}