SQLの条件指定に使うCriteriaの種類
メソッド | Criterion | 省略形 | 引数 | 説明 |
setGetNoneNew | なし | Q::goc | bool | GET時にデータが存在しない場合にデータを作成して返す(ソースのコメントより引用) |
setFact | Q::fact | なし | なし | ? |
setPager | Q::pager*1 | なし | Paginatorクラス | PaginatorクラスからLimitとOffsetを指定 |
setLimit | なし | なし | 数値 | LIMIT 数値 |
setOffset | なし | なし | 数値 | OFFSET 数値 |
setLock | なし | なし | bool | FOR UPDATE |
setUnionAll | なし | なし | bool | Union実行時にUNIONとするかALLとするか(ソースの略) |
add | Q::equal | Q::eq | カラム,値 | addEqualと同等 |
addEqual | Q::equal | Q::eq | カラム,値 | カラム = 値 |
addNotEqual | Q::notEqual | Q::neq | カラム,値 | カラム != 値 |
addGreater | Q::greater | Q::gt | カラム,値 | カラム > 値 |
addGreaterEquals | Q::greaterEquals | Q::gte | カラム,値 | カラム >= 値 |
addLess | Q::less | Q::lt | カラム,値 | カラム < 値 |
addLessEquals | Q::lessEquals | Q::lte | カラム,値 | カラム <= 値 |
addLike | Q::like | なし | カラム,値 | カラム LIKE 値 |
addNotLike | Q::notLike | なし | カラム,値 | カラム NOT LIKE 値 |
addLikei | Q::ilike | なし | カラム,値 | カラム ILIKE 値 |
addNotLikei | Q::notiLike | なし | カラム,値 | カラム NOT ILIKE 値 |
addIn | Q::in | なし | カラム,値 | カラム IN 値 |
addNotIn | Q::notIn | なし | カラム,値 | カラム NOT IN 値 |
addOrder | Q::order | なし | カラム | ORDER BY カラム |
addOrderDesc | Q::orderDesc | なし | カラム | ORDER BY カラム DESC |
addDistinct | Q::distinct | なし | カラム | DISTINCT カラム |
addSum | Q::sum | なし | カラム | SUM(カラム) |
addJoin | Q::join | なし | カラム,カラム | JOIN(恐らく2番目は別テーブルのカラムを指定) |
addCriteria | なし | なし | Criteria | Criteriaを追加 |
addCriteriaOr | なし | なし | Criteria | Criteriaを追加(OR) |
clear | なし | なし | なし | 条件をクリア |
※「値」は「カラム」でも可
※「カラム」は、テーブルクラスの「columnカラム名」メンバを指定。例えばBBSテーブルのidカラムなら「Bbs::columnId()」とする。
基本的には、前に説明した方法で使えるんだけど、コンストラクタにQ::で簡単に指定できる。
例えば
$criteria = new Criteria(); $criteria->setLimit(5); $criteria->addOrderDesc(Bbs::columnId()); $object_list = $dbUtil->select(new Bbs(), $criteria);
は、
$object_list = $dbUtil->select(new Bbs(), new Criteria(Q::orderDesc(Bbs::columnId()), Q::pager(5)));
と書ける。
joinする場合
※2007/04/18追加
例えば
Q::join(Items::columnGroupId(), Groups::columnId())
のようなjoinを追加する場合、
$items = $dbUtil->select(new Items(),new Criteria( Q::join(Items::columnGroupId(), Groups::columnId()) ));
としても、Itemsの項目しか返ってこない。この場合、
list($items, $groups) = $dbUtil->select(array(new Items(), new Groups()),new Criteria( Q::join(Items::columnGroupId(), Groups::columnId()) ));
とすると、$itemsと$groupsが同じkeyで返ってくる。
複数JOIN時の注意
lingrのログを見てください
*1:これの場合は、引数をlimit, offsetの形式で指定することも可能。この場合offsetは省略可。