1

2つのテーブルContentsとcontentpreviewsがあります。アクションから両方のテーブルにデータを追加したいと思います。コンテンツテーブルのlast_insert_idは、contentpreviewsテーブルに保存されます。どのようにそれを処理できますか?

$this->data['Content']['user_id']     = $uid;
$this->data['Content']['content_category_id'] = $catname;
$this->data['Content']['title']         = $contname;
$this->data['Content']['description']           = $contdesc;
$this->Content->create();                             
$this->Content->save($this->data['Content']);
/*****************CONTENT SAVE END*****************/

if(!empty($arxml[$arrFirstNode]['Webpreview'])){
$webPreViewItem = count(array_values($arxml[$arrFirstNode ['Webpreview']));                       
$webPrevfileName  = array_values($arxml[$arrFirstNode]['Webpreview']);

for($wpi=0; $wpi<$webPreViewItem; $wpi++){
   $this->data['contentpreviews']['content_id']   = $this->Content->getLastInsertId();
   $this->data['contentpreviews']['name']     = $webPrevfileName[$wpi];
   $this->data['contentpreviews']['is_wap']      = 1;
//$this->Contentpreview->create();            

// $ this-> Contentpreview-> saveAll($ this-> data ['Contentpreview']); では、データをコンテンツとcontentpreviewsテーブルにまとめて保存するにはどうすればよいでしょうか。

4

1 に答える 1

0

CakePHP では、一度に複数のモデルの関連付けを保存できます。このリンクが役に立ちます。

まず、参照リンクに示されているように、関連付けられた配列を作成する必要があります。次に、次のコードを使用して、データを content および contentprviews テーブルに保存する必要があります。

$this->Content->saveAssociated($this->requst->$data, array('deep' => true));

また、saveAll() メソッドを使用して、1 回のクエリで複数の関連テーブルにデータを保存することもできます。

于 2012-07-19T11:10:58.683 に答える