cakephp - 使用create()无法按预期工作

时间:2014-07-17 09:58:54

标签: cakephp

我有一个产品控制器,当我保存新产品时,我想将一些记录保存到另一个相关的控制器,以记录产品与哪些类别相关联。

我正在使用的代码是:

$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() - 一个新的记录上。

任何人都可以解释我做错了什么以及如何使这项工作成功?

1 个答案:

答案 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);

我不认为这是唯一的方法,但这应该可以正常工作。

祝你好运!