cakePHPでは「ルールチェッカー」を通して、アプリケーションやネットワークの既存の状態に対してデータを比較することができます。
このルールーチェッカーはテーブルクラスのbuildRules()
メソッドで定義することができます。
buildRules()
メソッドで定義されるrules
は、失敗/成功を示す真偽値を返します。
そして、このルールは特定の条件に一致した場合のみ適用することができます。
以下の例では、userエンティティーのhasChildrenという項目がTRUE
である場合のみ、Motherテーブルにid が存在するか確認しています。
UserTable.php
use Cake\ORM\RulesChecker; public function buildRules(RulesChecker $rules) { $rules->add(function ($entity, $options) use($rules) { if ($entity->hasChildren) { $rule = $rules->existsIn('user_id', 'Mother'); return $rule($entity, $options); } else { // 条件に一致しない場合、チェックは行わない return true; } }, 'ValidUserInfo'); return $rules; }