仕事でPhalconを使い始めてだいぶ期間が経ったので、ここで備忘録と振り返りも兼ねて、PhalconでのデータのUpdateメソッドの違いや方法についてまとめる。
とりあえずPhalcon\Mvc\Model
配下のメソッドのみまとめてます。
PHQLやSQLの実行方法については後ほど追記します。
はじめに
- Phalconに関するタグには記事が多いがどちらかというと環境構築周りの記事が多め
-
Phalcon\Mvc\Model
のsave
やupdate
以外にも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件までしかキャッシュしないため、メモリも節約可能