首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Symfony2 使用 Doctrine 進行資料庫查詢的完整方法總結

     編輯:PHP 綜合知識

前置變數

$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('AcmeStoreBundle:Product');

1. Repository 基本查詢方法

$repository->find($id);                    // 主鍵查單筆
$repository->findAll();                    // 全部
$repository->findOneByName('Foo');         // 單一條件
$repository->findAllOrderedByName();       // 自定義方法(需自行實作)
$repository->findOneBy(['name'=>'foo', 'price'=>19.99]);
$repository->findBy(['name'=>'foo'], ['price'=>'ASC']);

2. DQL 查詢

$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() 需包裝 try-catch 處理 NoResultException:

$query->setMaxResults(1);
try {
    $product = $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
    $product = null;
}

參數綁定: 使用 setParameter() 或 setParameters() 防止 SQL 注入:

->setParameters(['price' => '19.99', 'name' => 'Foo'])

3. QueryBuilder 查詢建構器

$query = $repository->createQueryBuilder('p')
    ->where('p.price > :price')
    ->setParameter('price', '19.99')
    ->orderBy('p.price', 'ASC')
    ->getQuery();
$products = $query->getResult();

QueryBuilder 提供流暢介面,適合動態建構複雜查詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved