Symfony2におけるデータベース内のデータの3つの取り方

Symfony2

リポジトリを使う場合。

$this->getDoctrine()->getRepository()を使う

いろいろなfindメソッドが用意されている。

複数条件もいけます。

DQLを使う場合

結果が1つと分かっていればgetResult()の代わりにgetSingleResult()が使える。

注意事項

getSingleResult() メソッドは、結果がない場合、一つより多くの結果が返ってきたときに、それぞれ、Doctrine\ORM\NoResultException、Doctrine\ORM\NonUniqueResultException をスローします。もしこのメソッドを使用する場合は(そして、1つより多くの結果を返すようなクエリを実行している場合は)、try-catch ブ ロックで囲って、ただひとつの結果が返ることを明確にしておかなければなりません。

パラメータのセット

setParameter() メソッドに注目してください。Doctrine を使用する際は、先の例のように、外部的な値は常に”プレースホルダ”として設定するのが良いでしょう。

プレースホルダ price に値をセットするには、setParameter() メソッドを呼びます。

値を直に置くのではなくパラメータを使用するのは、SQL インジェクションを防ぐためであり、常にそうすべきです。複数のパラメータがある時は、setParameters() メソッドを使用すれば一度に値をセット出来ます。

3. QueryBuilderを使う

タイトルとURLをコピーしました