なんたらノート第三期ベータスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるなんたらノート第三期ベータ2008-10-15CodeIgniterにリレーション解決サポートをPHPCodeIgniterにリレーション解決をサポートするライブラリを書きました。librariesに入れてload->library()で使います。CodeIgniterにはSQLクェリビルダはあるけど、エンティティの関連性を補助する機能がまるでありません。あるレコードに関連する別のレコードを拾いつつ、オブジェクトのツリーを構築するとき、そこそこ面倒なコードを書かないといけません。$r-&gt;row();?&gt;O/Rマッピングエンジンほど賢くないけど、この(*:1)関連づけコードがこうなります。関連させる外部キー);?&gt;ビューティフル。あと、has_many(1:*)とhas_many_ref(*:*)もあります。O/Rマッパーにありがちな多重度って、こんなもんかな?(1:1)はたぶん、refでいけると思います。DAOの実装を簡単にするために、遅延フェッチのあるほんとのActiveRecordパターンなドメインクラスを書こうとも思ったけど、CIはコントローラ内でトランザクションを切ってしまわないといけないので、遅延フェッチは没でした。試行錯誤の末、やることを変えずに書き方を変えれば、コードの読み書きがだいぶマシになる、っていうのにとどめることにし、類似箇所がいっぱいあるので、せめてライブラリにしようとなりました。意外とこれがイケてた。ライブラリのインターフェースを考え直し、たぶん、最小コード量になるインターフェースとして、こんなのがいいんじゃないかと思っています。CodeIgniterまあ、CI使うかぎりは(画面に出ないものは取ってこないような)手でチューニングして、「表」を主体に書くのが普通なんだろうな。ネストする構造はジョインして表形式にしてしまう、とか。データベースもデフォルトの1個しか想定してないし。Blog|ブログを報告する。