なんちゃってウェブ系エンジニアの備忘録

某IT企業で働くなんちゃってウェブ系エンジニアが技術やデザインなど役に立ちそうなものなどを備忘録として載せていきます

SymfonyのCriteriaについて

業務でWebアプリを開発しているんだけど、
SymfonyのCriteriaを使ったクエリがたまに忘れるので、備忘録として残しておく。
*適宜、追記していきます

例えば、Bookテーブルがあって列にはID,NAME,PRICE,INPUT_DATEとする。

主キーをもとにデータを取得したい場合
<?
$c = new Criteria();
echo BOOKPeer::retrieveByPk(1);
?>
件数を取得したい場合
<?
$c = new Criteria();
echo BOOKPeer::doCount($c);
?>
whereで条件検索したい場合
<?
$c = new Criteria();

//LIKEで検索
$c->add(BOOKPeer::NAME, "%山田%", Criteria::LIKE);

//INで検索
$c->add(BOOKPeer::ID, array(1,3,5), Criteria::IN);

//NOT INで検索
$c->add(BOOKPeer::ID, array(6,7,8), Criteria::NOT_IN);
	
//日付範囲から指定の日付を検索 
$c->add(BOOKPeer::INPUT_DATE, '2001/01/01', Criteria::GREATER_EQUAL);
$c->addAnd(BOOKPeer::INPUT_DATE, '2001/12/31', Criteria::LESS_EQUAL);

//値段範囲から指定の値段を検索 
$c->add(BOOKPeer::PRICE, '600', Criteria::GREATER_EQUAL);
$c->addAnd(BOOKPeer::PRICE, '750', Criteria::LESS_EQUAL);

?>
取得行数を制限する(テーブルBookのレコードから上から3件だけ取得する
<?
$c->setLimit(0);
$c->setOffset(3);
?>
並び替え(値段が高いものから並び替え)
<?
$c->addDescendingOrderByColumn('PRICE');
?>
並び替え(値段が安いものから並び替え)
<?
$c->addAscendingOrderByColumn('PRICE');
?>
Criteriaで作成したSQL内容を確認する
<?
echo $c->toString();
?>

これ実行すると、生成したSQL文が表示される。
デバックにかなり重宝になる!