メモしたいことをメモする
ORMの意義とかまだわかってないなと感じつつ、設計思想とともにお勉強が進んでおります。おもしろい。
他コントローラーの呼び出しについて
モデリング的にはNGかもだけど、、とりあえずのメモ。
最初に試した。
$variation = Request::forge('hoge/create')->execute(array('param_hmvc'=>$param_hmvc))->response();
これだとaction以外もいけるな。beforeでインスタンス化しとく。
インスタンス化したときにbeforeは実行されていないオブジェクトなので注意。
$this -> Controller_Hoge = new Controller_Hoge($this -> request);
$variation = $this -> Controller_Hoge -> create($param_hmvc);
関連
$_has_one → 1対1
$_has_many → 1対多
$_belongs_to → 多対1、1対1($_has_one、$_has_manyの反対側)
$_many_many → 多対多
http://blog.lunarians.net/pc_it/1180.htm
belongs_toがわかりやすい
http://runble1.com/fuelphp-orm-hasmany/
関連のデータの扱い方がわかりやすい
http://piyopiyocs.blog115.fc2.com/blog-entry-574.html
発行SQLまで書き下しているのでわかりやすい
model_softについて
うまくいかない
どうも、allとかfirstなどの指定が使えないような気がする。
1.7あたりはバグを含んでるみたい。findがうまく機能しないでエラーになるのでたぶんそれだな。
http://stackoverflow.com/questions/21018263/fuelphp-permanently-deleting-with-model-soft
1.8はまだdevelopになってる。
ひとまずはsoftはつかわずにいくか。一時的に使うとかできればいいけどな。
http://qiita.com/moroya/items/80f1746909aaf2fc6867
softで喜んでる例
その後できたっぽい
・デフォルトのままの、deleted_atのカラムにした。(多分これは要因ではない)
・deleted_atにnullを許可した
・cascade_save,cascade_deleteまわりを少し理解して設定した
モデルの変更例は下記を参考
http://d.hatena.ne.jp/kaitoh07/20130115/1358219271
公式は下記
http://fuelphp.jp/docs/1.8/packages/orm/model/soft.html
このcascadeはfalseで、親のcascadeをtrueにする方向で。
http://madroom-project.blogspot.jp/2011/11/ormmodel.html
'cascade_save' => true, // true/falseどちらで有るべきか、要調査。とりあえずはドキュメント通り。
'cascade_delete' => true, // falseにすると、削除時にtwitter_userが削除されなかった。
'cascade_save' => false, // trueにすると一切の変更がない場合のsave()でエラーとなる。
'cascade_delete' => false, // trueにすると削除時に親も消してしまう。注意。
cascade_save, cascade_delete
cascade_saveするときって、createのときのバリデーションをどうすればいいのだろう。
ひとまずトランザクションで囲んでtrycatchでエラー制御してるので、これについては未確認。
updateについて
stashしてmargeするらしい。
http://runble1.com/fuelphp-update-git/