Propel Tips

出典: 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

  • where order.id = 1
$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

  • order by order.id asc
$c = new Criteria();
$c->addAscendingOrderByColumn(OrderPeer::ID);
  • order by order.id desc
$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);
リンク