Criteriaの条件文と比較演算子の書き方

uchiumiです。

今回はsymfonyなどで、データベースのデータをいじるために使うと便利な、Criteriaオブジェクトについて書きたいと思います。

まずCriteriaで等しくない条件(<>)の文はどのように書くのだろうという疑問を持ちました。
というのもaskeetではコピペが多く、Criteriaの使い方についてしっかり覚えていないというのがあったからだと思います。
なのでこれを機にCriteriaについて少し調べてまとめてみました。

Criteriaとは

CriteriaクラスはPropelのSQLをシンプルにするもので、SQL文無しでデータベースをいじれるとても便利なクラスです。

Criteriaの構文

例えば下記のような、テーブルの中身を全部持ってくるSQL文があったとすると、
SELECT * FROM happy5;
下記のようなオブジェクトを作成しただけで上記のSQL文のような意味になります。
$c = new Criteria();
便利ですね。

しかしWHEREの様に条件をつける方法を知らなければ、あまり便利な感じがしません。
WHERE文の様な条件をつける際には上記で作成したオブジェクトを使い、
$c->add(カラム名, 値);
のように書いていきます。
以下私が気になった(<>)の条件をつける方法と、他いくつかの構文調べて下記にまとめてみました。

SQLの文 Criteria
WHERE column = value ->add(column, value);
WHERE column <> value ->add(column,value, Criteria::NOT_EQUAL);
ORDER BY column ASC ->addAscendingOrderByColumn(column);
ORDER BY column DESC ->addDescendingOrderByColumn(column);
FROM table1, table2 WHERE table1.col1 = table2.col2 ->addJoin(col1, col2)

演算子の条件は第3引数にもってくるようです。
殆どがadd()メソッドで指定できるので楽ですね。
これだけでも覚えればいろいろな方法でデータをもってくることが可能になります。
なお、演算子について上記の(<>)の他にはそれぞれ下記の様なものがあります。

比較演算子 Criteria
> , < 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

以上になります。

さて今回はThe Definitive Guide to symfony 1.0(日本語var)の8章 を参考にさせて頂いたきました!
他にもaskeetだけでは理解できなかったこともあると思うので、上記のサイトをみたり、実際自分で何か作ったりしながら理解していきたいと思います!

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree