CakePHP
CkaePHPのO/Rマッパー(?)は複合主キーに非対応なので、自前でCRUDを実装する前提の方がうまくいくと思います。 DataSourceクラスが便利なので、上手く使えば意外とスムーズに実装できたりできなかったり……。でも、せっかくだから自動化できる部分は活用し…
デフォルトのデータベースとして「MySQLのデータベースその1」を利用して、「MySQLのデータベースその2」や「Oracleのデータベース」なども混在して利用するという開発環境での話し。 この環境でデフォルトではない「Oracleのデータベース」を利用するモデル…
実際のとこ、かなり泥臭いやり方なので全然冴えてはいないところですが……。あるマスタのテーブルドには、番号体系の正規表現を保存した列がある。 ユーザは、入力したコードを番号体系の正規表現でパターンマッチングして、マスタから特定のレコードを検索す…
業務系のバックエンドをWebアプリケーションと連携するときなど、複合主キーで CakePHP が上手く操作できなくて、効率良く操作できないものかと悩んだ際のメモです。こんなやり方がいいのかは微妙ですが、復号主キーのテーブルを一つのモデルとして利用した…
検索条件が複雑になったときに、デバッグのために生成されるSQLを確認したかっった。ので、処理を覗いて追ってみたら意外と単純ですぐに確認できた。 モデルの中だったら、こんな↓感じでWHERE句のSQLを生成できる。 $this->getDataSource()->conditions($con…
テストファーストという言葉を知らないぼくは、「プロジェクトの締切り間際になって」まとめてモデルを(ちゃんと)テストしたくなる。ユニットテストのコードを生成するだけであれば、↓のようにすぐできる。 $ cake/console/cake bake test Model -app app-…
CakePHP(1.3系)でなるべくシンプルな実装でインクリメントのみの単純な機能を実装したい……、としたら↓みたいな実装はベター? public function incrementPv($id) { $table = $this->getDataSource()->fullTableName($this); $query = "UPDATE {$table} SET…
モデルのバリデーションで↓のようなエラーが発生したら、ルールが未定義かtypoしているかのどっちか。 Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE/cake/libs/model/model.php, line 2506] 開…