我有一个产品表,对于每种类型的员工(另一张表)都有价格。
这让我想到了表格:
# product
# associate_types
## description
# associate_prices
## product_id
## associate_type_id
## price
产品的模型关系:
'prices' => array(self::HAS_MANY, 'AssociatePrices', 'id_product')
AssociatePrices:
'associateType' => array(self::BELONGS_TO, 'AssociateTypes', 'id_associate_type'),
现在,在产品表单上,我显示了各种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;
}
答案 0 :(得分:1)
更新v2.0 您的新模型实例不正确。您没有编写 new 关键字来初始化模型。
$this->pricesDup[$i] = AssociatePrices::model();
必须是:
$this->pricesDup[$i] = new AssociatePrices;
<强>更新强> 创建一个新的模型实例,以便将其保存在数据库中:
$pricesDup = new PriceDup;</strike>
您是否忘记分配属性?像这样:
$model->attributes=$_POST['attributes'];