タグ

cakephpとCakePHPとmodelに関するk_37toのブックマーク (7)

  • CakePHP1.2 Behaviorでモデルのメソッドキャッシュを行う : エクスギア Blog

    CakePHP1.2から新たにBehavior(振る舞い)クラスが実装され、モデルに共通の処理を定義することが可能になりました。 今回はBehaviorを使ってモデルの各メソッドの結果を自動的にキャッシュするクラス(CacheBehavior)を検討してみました。 CakePHPでは標準でビューキャッシュをサポートしていますが、Cacheクラスを利用することで簡単にキャッシュ機能を組み込むことができます。 ソースコードは少し長いので、一番最後に記述することにします。 CacheBehaviorの目的 CakePHPでの開発では、 ・まず動作するアプリケーションを構築する ・パフォーマンス上ボトルネックになっている部分のチューニングを行う という手法が一般的だと思います。 そこで、CacheBehaviorはチューニング時に実装していくことを想定し、構築時のソースコードになるべく

  • MySQLの関数を利用

    'last_login' => '!-NOW()' という書き方は使えなくなって、 $conditions = array( 'FooModel.foo_important_type = NOW()' ); にしたらダイジョウブらしい。 save()の場合には、 if ($this->Post->save($this->data)) { $this->Post->updateAll( array('Post.title' => 'Now()'), array("Post.id" => $this->Post->getLastInsertID()) ); みたいにしたらNow()が使えます。これでいいんだろうか…。

    MySQLの関数を利用
  • ASTRODEO 株式会社アストロデオ

    東京都台東区で黙々とウェブでサービスを開発している株式会社アストロデオのホームページです。

  • CakePHP Model#save()のSELECT文を抑制する

    Model#save()でUPDATE文が発行される際は、まず該当ID(primary key)がDBに存在するかを確認するSELECT文が発行されて、存在すればUPDATE文が発行されます。 1レコードだけを更新するなら特に気にする必要は無いのですが、大量のレコードを逐次UPDATEする際はこのSELECT文を抑制したくなります。 そこでこのSELECT文を抑制する方法を調べてみました。 1. Model#$__exitstsにtrueを入れる ちょっと強引な方法ですが、save()を実行する直前でModel#$__exitstsにtrueを入れると、SELECT文が発行されません。 Model#$__exitstsはsave()実行後、nullにリセットされるので元の値を戻す必要はありません。 // FooがModel $this->Foo->__exists = true; $thi

  • CakePHPのModelのわかりにくいところ (山本隆の開発日誌)

    CakePHP1.1を使ってみて、特にController内のModelを理解するのに時間がかかりました。 ということで、そのまとめ。 まず、Controller内の「$this->Model」はModelクラスのインスタンスということ。 idが$idのデータを読み込む方法。 $this->Model->read(null, $id); 以下のコードも同じ結果になります。 $this->Model->id = $id; $this->Model->read(); 落とし穴は、自動的にid属性が設定される場合があること。 2回続けて保存したとき、1件しか登録されません。 $this->Model->save($this->data); //新規保存 $this->Model->save($this->data); //更新保存になる 原因は、1回目の「$this->Model->save()

  • CakePHP で Model を介さずに SQL を呼ぶ - d.hetima

    リードオンリーで単純な値、あるいは複数のテーブルをまたぐ統計、はたまたサイドメニュー等に必ず表示する値など、Model を使わない方が良い気がするデータをどう取得するか。そういう値も Model を使えよという意見もあるだろうし、実際迷っているとこですが、Model を使わずに済ませる方法をメモしておきます。 ちなみに上記の例で Model を使わない理由・メリットを挙げると、 リードオンリーで単純な値(例えば内部処理の if 文のみに使われる真偽値) → 変数だけで済めば軽い 複数のテーブルをまたぐ統計 → どの Model に記述したら良いか迷う サイドメニュー等に必ず表示する値 → 来の処理では使わない Model が毎回ロードされるのを避ける といったところでしょうか。基的にはパフォーマンスの問題です。また、今回のケースでは、AppController と 実際の Contro

  • CakePHPでDBアクセスなしのModelを作る

    CakePHPのmodelはDBのテーブルと1対1になる事が想定されています。ただシステムを構築する際はこのような単純なmodelだけでは使い勝手が悪い場合があります。そこでDBアクセス無しのmodelの作成方法を模索してみました。 フレームワークのソースを見たところmodelの$useTableにfalseをいれておけば良いようです。 [app/models/no_db.php] <?php class NoDb extends AppModel { $useTable = false; } ?> では、modelなしのcontrollerはというと・・・フレームワークを見る限りでは方法は無さそうですね。ただcontrollerの$nameでmodel名を指定する事ができるので、これにダミーのmodelを指定すれば、modelを新たに作らずにcontroller・ビューファイルを追加する

  • 1