Q. CakePHP2でリレーション先までデータを保存したい
A. saveAllメソッドにdeepオプションを渡してあげましょう。
例
・ArticleがItemを複数持ち、ItemはMetaItemを複数持っている(Naverまとめ的な)Article.php
array( 'className' => 'Item', 'foreignKey' => 'article_id', 'dependent' => true ) ); }Item.php
array( 'className' => 'MetaItem', 'foreignKey' => 'item_id', 'dependent' => true ) ); }MetaItem.php
array( 'className' => 'Item', 'foreignKey' => 'item_id' ) ); }保存するデータの構造
array( 'Article' => array( ... ), 'Item' => array( (int)0 => array( ... ), (int)1 => array( ... 'MetaItem' => array( (int)0 => array( ... ), (int)1 => array( ... ) ) ) ) )使うメソッド
$this->Article->saveAll($data, array('deep' => true));・コメント
なぜかリレーションが1段階先しか保存してくれない!!って困ったのでぐぐってみるとdeepオプションというのがあるじゃないですか!
ということで早速使ってみると見事解決。よかったよかった〜〜
適切なデータ構造を作って渡してあげれば適当に処理してくれるCakePHPありがとうございます!!
詳解CakePHP辞典―2.0/2.1/2.2/2.3対応
posted with amazlet at 14.01.22
滝下 真玄
秀和システム
売り上げランキング: 112,599
秀和システム
売り上げランキング: 112,599
更新情報はFacebookページで!
ブログの更新、読んで役立つ他ブログの記事などを更新しています。