◆主キーでレコードを取り出す
$article = ArticlePeer::retrieveByPk(7);
◆カラム名を指定してその値を指定して取り出す
$tag = TagPeer::retrieveByName($request->getParameter('tag'));
◆シンプルSELECT
$c = new Criteria();
$articles = ArticlePeer::doSelect($c);
◆wher・order
$c = new Criteria();
$c->add(CommentPeer::AUTHOR, 'Steve');
$c->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
$comments = CommentPeer::doSelect($c);
// 上記のコードは下記のようなSQLクエリになる
SELECT blog_comment.ARTICLE_ID, blog_comment.AUTHOR, blog_comment.CONTENT,
blog_comment.CREATED_AT
FROM blog_comment
WHERE blog_comment.author = 'Steve'
ORDER BY blog_comment.CREATED_AT ASC;
Table 8-1 - SQL and Criteria Object Syntax
SQL |
Criteria |
WHERE column = value |
->add(column, value); |
WHERE column <> value |
->add(column, value, Criteria::NOT_EQUAL); |
Other Comparison Operators |
|
> , < |
Criteria::GREATER_THAN, Criteria::LESS_THAN |
>=, <= |
Criteria::GREATER_EQUAL, Criteria::LESS_EQUAL |
IS NULL, IS NOT NULL |
Criteria::ISNULL, Criteria::ISNOTNULL |
LIKE, ILIKE |
Criteria::LIKE, Criteria::ILIKE |
IN, NOT IN |
Criteria::IN, Criteria::NOT_IN |
Other SQL Keywords |
|
ORDER BY column ASC |
->addAscendingOrderByColumn(column); |
ORDER BY column DESC |
->addDescendingOrderByColumn(column); |
LIMIT limit |
->setLimit(limit) |
OFFSET offset |
->setOffset(offset) |
FROM table1, table2 WHERE table1.col1 = table2.col2 |
->addJoin(col1, col2) |
FROM table1 LEFT JOIN table2 ON table1.col1 = table2.col2 |
->addJoin(col1, col2, Criteria::LEFT_JOIN) |
FROM table1 RIGHT JOIN table2 ON table1.col1 = table2.col2 |
->addJoin(col1, col2, Criteria::RIGHT_JOIN) |
◆複雑な例
$c = new Criteria();
$c->add(CommentPeer::AUTHOR, 'Steve');
$c->addJoin(CommentPeer::ARTICLE_ID, ArticlePeer::ID);
$c->add(ArticlePeer::CONTENT, '%enjoy%', Criteria::LIKE);
$c->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
$comments = CommentPeer::doSelect($c);
// 上記のコードは次のようなSQLクエリになる
SELECT blog_comment.ID, blog_comment.ARTICLE_ID, blog_comment.AUTHOR,
blog_comment.CONTENT, blog_comment.CREATED_AT
FROM blog_comment, blog_article
WHERE blog_comment.AUTHOR = 'Steve'
AND blog_article.CONTENT LIKE '%enjoy%'
AND blog_comment.ARTICLE_ID = blog_article.ID
ORDER BY blog_comment.CREATED_AT ASC