我有2个型号。订单& OrderProduct
当添加Order to时,我试图操纵Order Model的beforeValidate()中的OrderProduct数据但是没有成功。
我试过了。 (两者都在订单模型中)
function beforeValidate()
{
parent::beforeValidate();
$this->data['OrderProduct']['total'] = 1000;
return true;
}
function beforeValidate()
{
parent::beforeValidate();
CakeRequest::data('OrderProduct.total', 1000);
return true;
}
但是在事务失败后从控制器查看时,OrderProduct数据没有被修改(!this-> saveAll())。
可以提出替代解决方案,而无需在控制器中手动设置数据。
答案 0 :(得分:3)
尝试$ this-> request-> data ['OrderProduct'] ['total'] = 1000;
答案 1 :(得分:0)
您需要在某处调用成功保存来更改数据库中的记录。如果您执行保存但失败,则您正在编辑的值将被丢弃。
仅供参考,第一个应该用于设置$ this-> data中的值。
现在您只需要一个不会失败的交易。即
$this->save($this->data);
另请注意,保存调用需要更多信息(如id),或者您需要先读取记录然后保存。