Ethna_AppSearchObject の 検索条件(Ethna 2.5.0 の標準)
Ethna_AppSQL.php の getCondition()で検索条件を判定しSQLを組み立てているので Ethna_AppSQL::getCondition()をオーバーライド。
しかし Ethna_AppObject内でオーバーライドしなければならないメソッドが多数あり、今回急ぎの為 コアのソースを直接修正。
OBJECT_CONDITION_NE OBJECT_CONDITION_EQ OBJECT_CONDITION_LIKE OBJECT_CONDITION_GT OBJECT_CONDITION_LT OBJECT_CONDITION_GE OBJECT_CONDITION_LE OBJECT_CONDITION_AND OBJECT_CONDITION_ORに加え論理演算子の論理積を使えるようにする(MySQL5.0依存)。
Ethna_AppSQL.php の getCondition()で検索条件を判定しSQLを組み立てているので Ethna_AppSQL::getCondition()をオーバーライド。
しかし Ethna_AppObject内でオーバーライドしなければならないメソッドが多数あり、今回急ぎの為 コアのソースを直接修正。
どこかで未使用の番号を
define('OBJECT_CONDITION_BITAND', 1008);のように定義しておいて、Ethna_AppSQL.php
function getCondition($field, $value, $condition = OBJECT_CONDITION_EQ){ switch ($condition) { case OBJECT_CONDITION_EQ: $op = "="; break; case OBJECT_CONDITION_NE: $op = "!="; break; case OBJECT_CONDITION_LIKE: $op = "LIKE"; break; case OBJECT_CONDITION_GT: $op = ">"; break; case OBJECT_CONDITION_LT: $op = "<"; break; case OBJECT_CONDITION_GE: $op = ">="; break; case OBJECT_CONDITION_LE: $op = "<="; break; case OBJECT_CONDITION_BITAND: ★ $op = "&"; break; ★ } :で★マークの2行を追加するだけでとりあえず実現。