出典: encom wiki
[編集] Criteria
[編集] 定数
EQUAL =
NOT_EQUAL <>
ALT_NOT_EQUAL !=
GREATER_THAN >
LESS_THAN <
GREATER_EQUAL >=
LESS_EQUAL <=
LIKE LIKE
NOT_LIKE NOT LIKE
ILIKE ILIKE
NOT_ILIKE NOT ILIKE
CUSTOM CUSTOM
DISTINCT DISTINCT
IN IN
NOT_IN NOT IN
ALL ALL
JOIN JOIN
BINARY_AND &
BINARY_OR |
ASC ASC
DESC DESC
ISNULL IS NULL
ISNOTNULL IS NOT NULL
CURRENT_DATE CURRENT_DATE
CURRENT_TIME CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_TIMESTAMP
LEFT_JOIN LEFT JOIN
RIGHT_JOIN RIGHT JOIN
INNER_JOIN INNER JOIN
[編集] SELECT で取得するカラムを指定する
- select order.id, order.name
$c = new Criteria();
$c->clearSelectColumns();
$c->addSelectColumn(OrderPeer::ID);
$c->addSelectColumn(OrderPeer::NAME);
[編集] JOIN
- from order inner join product on order.prod_id = product.id
$c = new Criteria();
$c->addJoin(OrderPeer::PROD_ID, ProductPeer::ID, Criteria::INNER_JOIN);
- 複合キーによる JOIN はできません。INNER JOIN の場合は、(SQL レベルでは異なりますが)次のように記述することで可能です。
$c = new Criteria();
$c->addJoin(OrderPeer::PROD_ID, ProductPeer::ID);
$c->addJoin(OrderPeer::PROD_SUB_ID, ProductPeer::SUB_ID);
[編集] WHERE
$c = new Criteria();
$c->add(OrderPeer::ID, 1);
[編集] IN
- where order.id in (1, 2, 3)
$c = new Criteria();
$c->add(OrderPeer::ID, array(1, 2, 3), Criteria::IN);
[編集] 条件を OR で連結する
- where (order.no >= 100 and order.no <= 199) or (order.no >= 300 and order.no <= 399)
$c = new Criteria();
$criterion = $c->getNewCriterion(OrderPeer::NO, 100, Criteria::GREATER_EQUAL);
$criterion->addAnd($c->getNewCriterion(OrderPeer::NO, 199, Criteria::LESS_EQUAL);
$criterion2 = $c->getNewCriterion(OrderPeer::NO, 300, Criteria::GREATER_EQUAL);
$criterion2->addAnd($c->getNewCriterion(OrderPeer::NO, 399, Criteria::LESS_EQUAL);
$criterion->addOr($criterion2);
[編集] ORDER BY
$c = new Criteria();
$c->addAscendingOrderByColumn(OrderPeer::ID);
$c = new Criteria();
$c->addDescendingOrderByColumn(OrderPeer::ID);
[編集] 生成される SQL 文の情報を取得する
$c = new Criteria();
$query_info = $c->toString();
$c = new Criteria();
$p = array();
$query = BasePeer::createSelectSql($c, $p);
$params = print_r($p, true);