この記事の例では、Symfony2 が Doctrine を使用してデータベースクエリを実行する方法を説明します。参考として、以下のように皆さんと共有してください:
記事で使用されている定義済み変数:
$em = $this->getDoctrine()->getEntityManager(); $repository = $em->getRepository('AcmeStoreBundle:Product')
1. 基本的なメソッド
$repository->find($id); $repository->findAll(); $repository->findOneByName('Foo'); $repository->findAllOrderedByName(); $repository->findOneBy(array('name' => 'foo', 'price' => 19.99)); $repository->findBy(array('name' => 'foo'),array('price' => 'ASC'));
2.
注: (1) 結果を取得するには、以下を使用できます。$query = $em->createQuery( 'SELECT p FROM AcmeStoreBundle:Product p WHERE p.price > :price ORDER BY p.price ASC' )->setParameter('price', '19.99′); $products = $query->getResult();getSingleResult() メソッドを使用するには、結果が 1 つだけ返されるようにするために、このメソッドを try catch ステートメントでラップする必要があります。
$product = $query->getSingleResult();(2) setParameter('price', '19.99'); 値を直接記述する代わりに、この外部メソッドを使用して、クエリ ステートメントに「プレースホルダー」価格の値を設定します。 SQL インジェクション攻撃の場合、複数のパラメーターを設定することもできます:
->setMaxResults(1); try { $product = $query->getSingleResult(); } catch (\Doctrine\Orm\NoResultException $e) { $product = null; }3. Doctrine のクエリ ジェネレーターを使用します
->setParameters(array( 'price' => '19.99′, 'name' => 'Foo', ))この記事が皆様の PHP に役立つことを願っています。 Symfony フレームワークに基づいたプログラム設計。 データベースクエリメソッドの例に Doctrine を使用した Symfony2 に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。