我有一个产品控制器,当我保存新产品时,我想将一些记录保存到另一个相关的控制器,以记录产品与哪些类别相关联。
我正在使用的代码是:
$this->Product->create();
if ($this->Product->save($this->request->data)) {
$newProductId = $this->Product->getInsertID();
//associate products with categories
foreach($categoriesToSave as $key=>$value) {
$saveArray['CategoriesProduct'] = array('category_id'=>$value, 'product_id'=>$newProductId);
$this->Product->CategoriesProduct->create();
$this->Product->CategoriesProduct->save($saveArray);
$this->Product->CategoriesProduct->clear();
}
}
出于某种原因,即使$categoriesToSave
中有10个项目,也只保存最后一个项目。因此,只显示一个新的CategoriesProduct项目并将每个记录保存在最后一个而不是create()
- 一个新的记录上。
任何人都可以解释我做错了什么以及如何使这项工作成功?
答案 0 :(得分:0)
我会这样做:
//Add a counter
$c = 0
foreach($categoriesToSave as $key=>$value) {
$saveArray[$c]['CategoriesProduct']['category_id'] = $value;
$saveArray[$c]['CategoriesProduct']['product_id'] = $newProductId;
$c++;
}
$this->Product->CategoriesProduct->saveMany($saveArray);
我不认为这是唯一的方法,但这应该可以正常工作。
祝你好运!