2014-10-03 67 views
0

假设我有这样的模式:如何将项目添加到ManyToMany关系?

class Pizza extends CActiveRecord { 
    //... 
    public function relations() { 
     return array(
      'toppings' => array(self::MANY_MANY, 'Topping', 'pizza_toppings(pizza_id,topping_id)') 
     ) 
    } 
    //... 
} 

这等......

class Pizza extends CActiveRecord { 
    //... 
    public function relations() { 
     return array(
      'pizzass' => array(self::MANY_MANY, 'Pizza', 'pizza_toppings(topping_id,pizza_id)') 
     ) 
    } 
    //... 
} 

,并假设存在三个表(比萨,摘心,pizza_toppings)在数据库中,与指定字段pizza_toppings。

我尝试这样做:

$pizza = new Pizza(); 
$pizza->save(false);//save, no validate 
$topping = new Topping(); 
$topping->save(false);//save, no validate 
$pizza->toppings[] = $topping; 

但是,当我以这种方式增加,我获得一个E_NOTICE说这样的分配没有影响。

问题:如何将Yii 1.1.15元素添加到M2M关系中?

回答

1

尝试$pizza->toppings = array($topping);

如果我没有记错,他们禁止手动添加项目,但你可以随时更改整个阵列。

这是解决方法,我猜这不是很干净,但它会完成这项工作。如果有人有更好的解决方案,请发布。

我希望它有帮助

+0

将在下次测试。现在我使用了一个中间模型 – 2014-10-06 14:01:14