各タイプのアソシエイト (別のテーブル) に価格がある製品テーブルがあります。
これにより、テーブルに移動します。
# 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'),
今、製品フォームで、ユーザーがすべての AssociateTypes の価格を入力するために、すべての種類の AssociateTypes を表示しています。これをうまく管理しました。次にそれらを交差させます。
これらのエントリを更新/作成するために、製品の 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;
}