建立一個新的儲存庫

你可以隨意建立一個新的儲存庫,但建議在單獨的 Repository 資料夾中建立它們。

雖然你可以根據需要命名儲存庫檔案和類,但建議將儲存庫名稱命名為 EntityNameRepository,以便快速找到資料夾中的檔案。

假設我們有一個 Project 實體,儲存在 AppBundle\Entity 中,它看起來像這樣:

<?php
    
namespace AppBundle\Entity;
    
use Doctrine\ORM\Mapping as ORM;

/**
 * Project Entity - some information 
 *
 * @ORM\Table(name="project")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\ProjectRepository")
 */
class Project
{
   // definition of the entity with attributes, getters, setter whatsoever
}
    
?>

這裡的重要部分是 @ORM\Entity(repositoryClass="AppBundle\Repository\ProjectRepository") 行,因為它將此 Entity 與給定的 Repository 類連線起來。

你還需要使用\Doctrine\ORM\Mapping 類來使用對映選項。

儲存庫本身非常簡單

<?php

namespace AppBundle\Repository;

class ProjectRepository extends \Doctrine\ORM\EntityRepository
{
    public function getLastTenProjects()
    {
        // creates a QueryBuilder instance
        $qb = $this->_em->createQueryBuilder()
            ->select('p')
            ->from($this->_entityName, 'p')
            ->orderBy('p.id', 'DESC')
            ->setMaxResults(10)
        ;
        // uses the build query and gets the data from the Database
        return $qb->getQuery()->getResult();
    }
}

?>

重要的是要注意到 Repository 類必須擴充套件\Doctrine\ORM\EntityRepository,以便它可以正常工作。現在,你可以根據需要為不同的查詢新增任意數量的函式。