« tarコマンドでバックアップ その3 | メイン | 検索条件に論理積を使いたい訳 »

ethna

検索条件に論理積を使いたい

Ethna_AppSearchObject の 検索条件(Ethna 2.5.0 の標準)
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行を追加するだけでとりあえず実現。

トラックバック

このエントリーのトラックバックURL:
https://www.remix.asia/cgi/mt/mt-tb.cgi/6747

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)