[ロ] 続・CakePHP

このエントリーをはてなブックマークに追加
はてなブックマーク - [ロ] 続・CakePHP
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]

PostgreSQLでまともに動かない。更新頻度が高くない(気がする)。
たくさんのファイルを作んなくちゃいけなくてめんどっちい。
等々適当な理由をつけて放置していたCakePHPですが、新しく入社した人が
Cake最高!Cake最高!何でCakeじゃないんですか!って言ってくるのでしょうがないなぁ。
とか思いながら再び試して見たところ、1時間弱でこんなのできました。
CakePHP scaffoldingでらくらくマスターメンテ
外部キー参照も表現できる。


# controller
<?php
class MoniesController extends AppController {
        var $scaffold;
}
?>

# model
<?php
class Money extends AppModel {
        var $name = 'Money';
        var $belongsTo =        array('Genre' =>
                                array(  'className' => 'Genre',
                                        'dependent' => true,
                                        'foreignKey' => 'genre_id'
                                )
                         );
}
?>

とやると、DBマスターメンテ画面完成なのはちょっぴり感動的ではある。外部キー参照とかも簡単なコードを書くだけで楽チンなのは確か。
で、やっぱりPostgreSQLだといまいち。前に比べて解決されてきているので期待は持てるものの、メインでPostgreSQLを使っている人が少ないことがわかるような不具合が発生するのだ。
マスターメンテ画面で、新規データ追加を行おうとすると「Notice: Undefined index: name in /path/to/cake/libs/model/dbo/dbo_postgres.php on line 350」というエラーが発生。


348         function lastInsertId($source, $field = 'id') {
349                 foreach ($this->__descriptions[$source] as $sourceinfo) {
350                         strcasecmp($sourceinfo['name'], $field);
351                         if (strcasecmp($sourceinfo['name'], $field) == 0) {
352                                 break;
353                         }       
354                 }   

コードを見ると、strcasecmp するところでnameなんてキーがないから、そんなインデックスないよNoticeとなってる。
開発者、NoticeをOFFにしてるなぁ。と思ったり。


348         function lastInsertId($source, $field = 'id') {
349                 foreach ($this->__descriptions[$source] as $sourceinfo) {
350                         if (!array_key_exists('name', $sourceinfo)) {
351                                 break;
352                         }
353                         if (strcasecmp($sourceinfo['name'], $field) == 0) {
354                                 break;
355                         }
356                 }

ひとまずこんな風にコードを追加して、問題はなさそうだけど、そもそもどういう処理なのかがわからないので正しい修正なのか良くわからん。全部追っかける気にならんー。バグレポートだそうかしら?2チケットほどこの件に関するバグレポートが出てるんだけど、「needmoreinfo」でCLOSEされてる・・・。
まぁ、この2つのチケットは確かにいけてないレポートではある。(w
しばらくCakeに時間とってもいいかなぁとはおもったので、影でこそこそやってみます。

Popular Posts:

“[ロ] 続・CakePHP” への3件の返信

  1. cockok>
    ちょっとまて。今気がついた。
    NotDRYってだめじゃん。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*