在CakePHP中使用事务

时间:2011-01-15 15:28:15

标签: cakephp transactions

我在数据库中有两个表,当我添加产品时,我需要在两个表中插入。我认为我需要使用事务,但因为我正处于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;
   }

1 个答案:

答案 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处访问