NaifyDb\Table\Row クラス

DB の 1 行をオブジェクトとして扱い、プロパティ代入と save() で永続化する

設計意図

Row
任意のカラム名を扱う __get / __set は、宣言済みプロパティの hooks へ単純置換しない。 変更されたカラムだけを UPDATE する dirty tracking 付き。 新規行は save() で INSERT し、既存行は dirty カラムのみ UPDATE する。 Usage: $row = $table->findById(1); if ($row !== null) { $row->name = 'updated'; $row->save(); // 変更したカラムだけUPDATE } $row = $table->createRow(['name' => 'new']); $row->save(); // INSERT

プロパティ

名前型説明
private $data array 現在メモリ上で保持しているカラム値
private $original array 取得直後または保存直後の基準値。dirty 判定に使う
private $table Table 所属テーブル 8.1 → readonly
private $isNew bool true なら save() で INSERT、false なら UPDATE

メソッド

メソッド説明
public __construct(Table $table, array $data = '...', bool $isNew = false): 行オブジェクトを生成する(通常は Table 経由で取得する)
public save(): string|int 保存する(新規なら INSERT、既存なら dirty カラムのみ UPDATE) SQL 正常終了後は、フックが返した主キー・通常列を保存済み値として保持する。 DB の DEFAULT やトリガーによる値の再取得は行わない。
public delete(): int この行を DB から削除する
public getDirty(): array 変更されたカラムのみ取得する
public isNew(): bool 新規行かどうか 8.4 → property hooks
public toArray(): array 配列に変換する
public getPrimaryKeyValue(): array プライマリキーの値を連想配列で取得する
UPDATE/DELETE は元の PK を基準に行うため、`original` 側の値を返す。