0

我有一个产品表,其中每种类型的关联(另一个表)都有一个价格。

这把我带到了桌子上:

# product

# associate_types
## description

# associate_prices
## product_id
## associate_type_id
## price

产品型号关系:

'prices' => array(self::HAS_MANY, 'AssociatePrices', 'id_product')

联营价格:

'associateType' => array(self::BELONGS_TO, 'AssociateTypes', 'id_associate_type'),

现在,在 Product 表单上,我正在显示各种 AssociateTypes,以便用户填写所有 AssociateTypes 的价格,并且我管理得很好:我正在获取 associateTypes,已经为这个给定产品插入的价格和然后越过它们。

为了更新/创建这些条目,我在 Product 的 afterSave() 中有以下代码:

    if(isset($_POST['AssociatePrices'])) {
        $this->pricesDup = array(); // overwriting current price setting
        foreach ($_POST['AssociatePrices'] as $i => $price) {
            $this->pricesDup[$i] = AssociatePrices::model();
            $this->pricesDup[$i]->attributes = $price;
            $this->pricesDup[$i]->id_product = $this->id;
            $this->pricesDup[$i]->save(false);
        }
    }

$this->pricesDup是我刚弄出来的一个属性,因为我不能玩$this->prices

发生的事情是,即使 save() 方法返回 true,数据库也保持不变。

我已经从 yii 框架论坛上阅读了很多东西,但这些东西都没有真正适用于我的案例。我究竟做错了什么?

非常感谢

编辑: Products 模型也有一个 beforeSave() 函数,但它与这个问题无关。即使我根据要求在此处发布(部分)它。

/**
 * This function's mission is to handle the file upload.
 */ 
public function beforeSave() 
{
    parent::beforeSave();
    // File uploading
    if (is_object($this->image)) {
        $dir = PRODUCTS_FILES_PATH;

        $current = Yii::app()->getRequest()->getPost('currentImage');
        if (!empty($current))
            @unlink($dir.$current);

        $name = $this->image->name;
        $j = 1;
        while (file_exists($dir . $name)) {
            //....
        }
        $this->image->saveAs($dir.$name, true);
        $this->image = $name;
    }
    return true;
}
4

1 回答 1

1

更新 v2.0 你的新模型实例不正确。你没有写new关键字来初始化模型。

$this->pricesDup[$i] = AssociatePrices::model();

肯定是:

  $this->pricesDup[$i] = new AssociatePrices;

更新 创建一个新的模型实例,以便它可以保存在数据库中:

    $pricesDup = new PriceDup;</strike>

您是否忘记分配属性?像这样: $model->attributes=$_POST['attributes'];

于 2013-06-12T05:13:29.353 回答