送信したデータを保存するとき、saveじゃなくてsaveallを使えば、アソシエーションによって関連付けられたモデルのデータも一緒に保存することができる。
ただ、hasmanyで関連付けたデータは整数のインデックスがついた配列で渡されるので、ちょっと注意が必要。
たとえば、userとclientというモデルがhasmanyで関連付いているとして何か適当なデータを送ると、$this->dataにはこんな感じでデータが入る。
array([User] =>
     array([user_name] => macchi
         [spec] => junk
     )
    [Client] =>
     array([0] =>
         array(<pre>[code] => go
             [user_id] => 1
             )
        [1] =>
         array(<pre>[code] => zuya
             [user_id] => 1
         )
     )
)上記のカラム名とかは適当ですが、まあこんな感じです。
どんなデータが送られてきているのか見たければ、print_r($this->data)で見れる。print_rはprと略しても良いらしい。個人的にはこのprはしょっちゅう使う関数だと思う。困ったらとにかくprだ。
saveallをすると各レコードに対してバリデーションも勝手にやってくれるそうだけど、全てのレコードに対してバリデーションを行うには、validateにfirstを入れる必要があるみたい。
$this->User->seveall($this->data, array('validate' => 'first');僕も最初は関連付けてある方のバリデーションが一向にされなくて困っていたのだけど、これを書いたら解決した。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。
 
        

 
                         
                                 
                         
                                 
                         
                                 
                         
                                 
                             
                            