我在数据库中有两个表,当我添加产品时,我需要在两个表中插入。我认为我需要使用事务,但因为我正处于CakePHP,SQL等的学习阶段......我被卡住了。
那些是我的桌子
products(id, name, description, price)
images(id, path, alt, product_id)
并且产品模型中的方法如下所示:
function newProduct($product, $image){
if(!empty($product) && !empty($image)){
$dataSource = $this->getDataSource();
$dataSource->begin($this);
if($this->save($product)){
ClassRegistry::init('Image');
$Image = new Image();
$Image->product_id = $this->id;
//I'm stuck here, how to save ??
return $dataSource->commit($this);
}
$dataSource->rollback($this);
}
return false;
}
答案 0 :(得分:0)
CakePHP 1.2 +存在一种交易行为:
http://bakery.cakephp.org/articles/Jippi/2007/01/29/transaction_behavior
Cake还有一个saveAll
方法。只需在同一个数组中指定两个记录并调用saveAll:
$savearrary = array("Model1" => ..., "Model2" => ...);
$this->Model->saveAll($savearray);
(如果您将图像添加到$uses
数组(例如= var $uses = array("Image", "Product");
),则无需构建Image对象。图像模型可在$ this-> Image处访问