2010-10-05 24 views
0

我想通过ORM的删除方法从数据透视表中删除关系。这是用于更新与产品关联的类别的编辑方法。我可以成功添加多个关系,但是我需要在再次添加关系之前删除这些关系。Kohana 2.3.4 ORM - 删除数据透视表关系

下面是如何将它们添加

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

$类是项目从一种形式的数组和$产品模型。这工作完美。

我想我需要做这样的事情将其删除,但它不工作

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

$产品 - > id为产品的ID。我在添加脚本之前调用这个脚本。我的目标是删除所有包含“$ product-> id”中的值的关系,然后运行我的循环再次添加它们。如果我为数据透视表创建了一个模型,那么我可以很轻松地做到这一点,但这会违背使用数据透视表的要点。

回答

2

你有正确的想法。当你调用ORM :: factory('category',$ product-> id)时,你试图找到一个与你的产品ID相同的类别。相反,您需要指定要删除的类别的ID。

说你有,你要删除的类别的ID的数组:

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