如何将项目添加到ManyToMany关系?

时间:2014-10-03 19:34:29

标签: php yii

假设我有这个模型:

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,topping,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 个答案:

答案 0 :(得分:1)

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

如果我没记错,他们禁止手动添加项目,但您可以随时更改整个数组。

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

我希望它有所帮助