0

ここで、モデルの関係を介して単一の入力を2つの別々のテーブル列と比較するために基準->比較を使用した経験のある人はいますか?

ここに私の関係宣言があります:

    'class' => array(self::HAS_ONE, 'BaseEiEquipItem', 'iar_no'),
    'classSi' => array(self::HAS_ONE, 'BaseSiReceivedItem','iar_no'),

これらの2つのテーブルのいずれかに存在する場合、入力を比較したい

    if(!empty($_GET['BaseIar']['description'])){
        $this->description= $_GET['BaseIar']['description'];
        $criteria->with = array('class','classSi');//this will serve as join
        $criteria->compare('class.description,classSi.description', $this->description, true ); // true is equivalence of like %%
    }
    else{
        $this->description='';
        $criteria->with = array('class','classSi' );//this will serve as join
        $criteria->compare('class.description,classSi.description', $this->description, true ); // true is equivalence of like %%
    }
4

2 に答える 2

0

同じコードを何度も繰り返す理由 三項演算子を使用しようとすると、これを試してください

$this->description = (!empty($_GET['BaseIar']['description'])) ? $_GET['BaseIar']['description'] : '';
$criteria->with = array(
                    'class' => array(
                      'condition' => "class.description LIKE :desc"
                      'params' => array(":desc" => "%{$this->description}%")
                    ),
                    'classSi' => array(
                      'condition' => "classSi.description LIKE :desc"
                      'params' => array(":desc" => "%{$this->description}%")
                    ));
于 2013-09-13T05:24:34.787 に答える
0

あなたはこのようなことを試すことができます

$criteria->compare('class.description', $this->description, true);
$criteria->compare('classSi.description', $this->description, true, 'OR');
于 2013-09-13T09:47:13.883 に答える