cake PHP3 条件付きルールを使用する

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;
}