0

Q : に「OR」演算子を追加するにはどうすればよい$criteriaですか?

ここから参照

これは私の $criteria 条件の 1 つです。

$criteria->addSearchCondition('t.status','Reviewing',true,"OR","LIKE");
$criteria->addSearchCondition("status",'On Hold');

これは $criteria の sql です

SELECT COUNT(*)
FROM `request` `t`
JOIN users u ON (t.creator = u.id)
WHERE ((t.status LIKE :ycp0) AND (status LIKE :ycp1)) AND (reviewers LIKE :ycp2)

この条件((t.status LIKE :ycp0) AND (status LIKE :ycp1))((t.status LIKE :ycp0) OR (status LIKE :ycp1 )) である必要があります。

4

2 に答える 2

3

以下のように変更する必要があると思います

$criteria->addSearchCondition('t.status','Reviewing',true,"AND","LIKE");
$criteria->addSearchCondition("status",'On Hold','true','OR');

addSearchCondition 関数は、前の条件に演算子を追加します

于 2012-09-30T11:49:28.357 に答える
2

私はYIIに精通していませんが、2番目の基準は次のとおりです。

 $criteria->addSearchCondition("status",'On Hold');

検索条件を既存の条件に追加します。検索条件と既存の条件は、指定された演算子を介して連結されます。デフォルトは「AND」です。検索条件は、指定された列名と検索キーワードを使用して SQL LIKE 演算子を使用して生成されます。

'ed にする必要があることを指定しませんORが、既定ではAND'ed. そこで指定することはおそらくすでに行われているでしょうOR

$criteria->addSearchCondition("status",'On Hold', true, 'OR');

また、ここで検索条件を使用する必要はありません。比較したいだけです。条件についても同じですt.status。したがって、次のようなより単純な基準を使用すると、おそらくより簡単になりますaddColumnCondition

$criteria->addColumnCondition(
    array('t.status' => 'Reviewing', "status" => 'On Hold'), 'OR'
);

これは、私が思うにあなたの2行を置き換えることができます.

于 2012-09-30T11:49:44.650 に答える