NaifyDb\Table\Row クラス
DB の 1 行をオブジェクトとして扱い、プロパティ代入と save() で永続化する
設計意図
任意のカラム名を扱う __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` 側の値を返す。 |