05月16日
社員研修のためお休みします
社員研修のため5/18(月)はお休みを頂きます。
連絡の付く状態にはありますが、メールの返信などは遅れる可能性があります。ご了承ください。
ミナミゾウアザラシ…
高槻を拠点に、大阪・北摂を中心としたWebデザイン・システム構築 STUDIO Bloom
05月16日
社員研修のため5/18(月)はお休みを頂きます。
連絡の付く状態にはありますが、メールの返信などは遅れる可能性があります。ご了承ください。
ミナミゾウアザラシ…
Zend_Dbでは、テーブル間のリレーションを定義しておけば、親テーブルが削除された時に従属テーブルの対象も一緒に削除してくれる連鎖操作の削除機能があります。
親テーブル(Categories)に従属テーブル(Items)情報
従属テーブルに親テーブル情報
と設定しておけば、
とした時に、従属テーブルであるItemsのcategory_idが同一の物は削除される。
駄菓子菓子!
Itemsの従属テーブルとしてAttributesがあったとする。
(Categories→Items→Attributes)
となると、Categoriesを削除した時Itemsが削除されるのだから、当然Itemsの従属テーブルであるAttributesも削除されてしかるべき!と思う訳なんだけど、ところがどっこい、そうは行かない。
削除されるのは直下にあるItemsのみで、それ以降にあるAttributesは削除されない…
ちなみに、Itemsを削除するとAttributesは削除されるので、直下しか削除されないのは明白。。。
で、ググってみたところ一応出てきました解決策。
Zend_Db_Table_Abstractの_cascadeDelete()にある
を
でOKじゃね?との事。とりあえず検証してみたところ、意図したとおり2階層目以降も削除されてるようです。元のフレームワークに手を入れたくない場合は、_cascadeDelete()をオーバーライドすればOK。
参照先
あ、ちなみに_referenceMapの'refColumns'にはプライマリーキーを指定しないと駄目です。←ここでハマった…orz
なんだかバージョンアップごとに色々機能が増えてくれるのはいいんだけど…「Zend_Loaderは2.0で無くすぜ」とかZend_Applicationとか…ラーニングコストは高いよなぁ…
でもZendX_JQueryは興味津々なので、また勉強しなくっちゃ。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| « 4月 | 6月 » | |||||
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | ||||||