【发布时间】:2012-10-01 22:39:30
【问题描述】:
我在 CakePHP 2 中有以下代码:
$this->Order->id = 5;
$this->Order->saveAll(array(
'Order' => array(
'person_id' => $this->Session->read('Person.id'),
'amount' => $total,
'currency_id' => $code
),
'Lineitem' => $lineitems /* a correctly-formatted array */
));
我希望这会更新 Order 表中主键为 5 的行,然后插入 order_id 为 5 的 Lineitem 行。
但是,它所做的只是在 Order 中创建一个新行,然后使用新 Order 记录中的新 ID 创建 Listitem 行。
注意:我只是将 ID 设置为上述目的,以方便调试和演示这个问题。在我的最终代码中,我将检查当前person_id 是否已经存在挂单,如果有则执行$this->Order->id = $var;,如果没有则执行$this->Order->create();。
换句话说,有时我会希望它插入(在这种情况下我会发出$this->Order->create();),有时我会希望它更新(在这种情况下我会发出$this->Order->id = $var;)。上面的测试用例应该产生一个 UPDATE 但它却产生了一个 INSERT。
知道我在这里做错了什么吗?
【问题讨论】: