建立一個新的儲存庫
你可以隨意建立一個新的儲存庫,但建議在單獨的 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
,以便它可以正常工作。現在,你可以根據需要為不同的查詢新增任意數量的函式。