2011-01-15 5 views
0

データベースに2つのテーブルがあり、製品を追加するときに両方のテーブルに挿入する必要があります。私はトランザクションを使用する必要があると思うが、私はCakePHP、SQLなどの学習段階にいるので、私は立ち往生している。CakePHPでトランザクションを使用する

それらは私のテーブル

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

CakePHPの1.2+のためのトランザクションの振る舞いがあります:

http://bakery.cakephp.org/articles/Jippi/2007/01/29/transaction_behavior

ケーキにはsaveAllメソッドもあります。ただ、同じアレイ内の両方のレコードを指定して呼び出すSAVEALL:

$savearrary = array("Model1" => ..., "Model2" => ...); 
$this->Model->saveAll($savearray); 

(あなたが$uses配列(のような= var $uses = array("Image", "Product");)に画像を追加する場合は、Imageオブジェクトを作成する必要はありません画像のモデルは、づけしになります。 $ this-> Image)

関連する問題