PhalconでのUpdateメソッドまとめ


仕事でPhalconを使い始めてだいぶ期間が経ったので、ここで備忘録と振り返りも兼ねて、PhalconでのデータのUpdateメソッドの違いや方法についてまとめる。
とりあえずPhalcon\Mvc\Model配下のメソッドのみまとめてます。
PHQLやSQLの実行方法については後ほど追記します。

はじめに

  • Phalconに関するタグには記事が多いがどちらかというと環境構築周りの記事が多め
  • Phalcon\Mvc\Modelsaveupdate以外にもUpdateが出来るメソッドは色々とあるが情報が古いものが多い
  • Phalcon\Mvc\Model\Query::executeとかの最新のQueryクラスの情報が少ない
  • 各メソッドごとのメリット/デメリットが分かりづらいのでまとめる

Phalcon\Mvc\Model::save

言わずと知れたPhalconのモデルの基底クラスsaveメソッド。

  • インスタンスのプロパティに設定後&実行、もしくは引数に更新したい値を設定することで更新可能
  • Phalcon\Mvc\Model::initializeメソッドでuseDynamicUpdateメソッドをtureに設定すると、特定のカラムのみの更新も可能
    public function initialize() {
        $this->useDynamicUpdate(true);
    }
  • 単一のモデル/テーブルへの更新向き

Phalcon\Mvc\Model::update

Phalconのモデルの基底クラスupdateメソッド。
saveメソッドよりもUpdateに特化したメソッド。

  • インスタンスのプロパティに設定後&実行
  • インスタンスはfindメソッド等でデータを取得する必要があり
  • 単一のモデル/テーブルへの更新向き

Phalcon\Mvc\Model\Resultset::update

queryの実行結果クラスにも実はupdateメソッドが存在する。
以下のメソッドの戻り値で取得できる。

Phalconのモデルの基底クラスとの違いは以下の点。

  • クエリーの取得結果に対して、Update可能(SQLのupdate文のwhere句のようなイメージ)
  • 単一のモデル/テーブルだけでなく、テーブルを結合してのUpdateも可能
  • 検索結果はメモリ上で32件までしかキャッシュしないため、メモリも節約可能

参考