Aug 3
逆引きrhaco39: OR検索を行う
逆引き36,37,38でwhere句の作り方を書いていますが、この方法だとAND検索しかできません。
OR検索を行う場合は
addCriteriaOr(Criteria)またはorc(Criterion)を使用します。※1逆引き37で1番目に紹介したような1度にCriteriaを作る方法ではOR検索を作ることはできません。
使いかたですが、addCriteriaと同じように
$criteria = new Criteria(Criterion::equal(Product::columnName(),'hoge'))); .... $criteria->addCriteriaOr(new Criteria(Criterion::greater(Product::columnNum(),10)));
と書きます。これで
where product.name = 'hoge' or product.num > 10
という意味になります。
orcは
$criteria = new Criteria(Criterion::equal(Product::columnName(),'hoge'),Criterion::orc(Criterion::greater(Product::columnNum,10))));
のように書きます。1行で書きたい時に便利です。
(A and B and C) or (D and E and F)のようにしたい場合は
$criteria = new C(A, B, C); $criteria->addCriteriaOr(new C(D, E, F));
となります(A-Fは適当なCriterionです)
※1. yabekenさんのページで取り上げてました。yabekenさんご指摘ありがとうございました。