这里是关系信息:
我已经从我的控制器运行此保存呼叫
$options = array('deep' => true);
if($this->InventoryProduct->saveAssociated($this->request->data, $options)) {
$this->Session->setFlash('Successfully added products');
}
else {
$this->Session->setFlash('Failed to add products');
}
这里是保存前的$ this-> request->数据的内容
Array ( [GlobalProduct] => Array ( [upc] => 111222333444 [brand] => Sample Brand [name] => Sample Name [InventoryProduct] => Array ( [0] => Array ( [purchase_price] => 10.00 [sale_price] => 15.00 [practice_id] => 35 ) [1] => Array ( [purchase_price] => 10.00 [sale_price] => 15.00 [practice_id] => 35 ) ) ) )
这是结果表条目
我似乎无法理解为什么在保存数据阵列中只有2个inventory_records时,为什么会创建第3个inventory_product记录。
我已经盯着这段代码好几个小时,而且我没有看到这个问题。我确定它可能是愚蠢的。如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:0)
我现在无法测试,但我很确定问题是保存相关模型和使用deep
选项的组合。
仅对非直接关联使用deep
,例如保存包含Post hasMany Comment belongsTo User
关联中的新用户的评论的新帖子。 User
是非直接关联,需要使用deep
,但直接关联的Comment
条目却不会。
另外,您应该保存在主模型上,即GlobalProduct
,然后根据CakePHP约定对数据进行不同的格式化,InventoryProduct
不应嵌套在{{1}中}}
长话短说,通常应该这样做:
GlobalProduct
其中数据应格式如下:
$this->InventoryProduct->GlobalProduct->saveAssociated($this->request->data)