在symfony中扩展/自定义doctrine的实体存储库

时间:2011-09-15 10:10:56

标签: symfony1 doctrine repository entity

我需要symfony中的doctrine帮助,我想扩展/自定义实体存储库...所以我在bundle的Respository文件夹中创建了一个类(不存在),但我不知道除了从EntityRepository扩展类之外还要做什么。

以下是代码:

<?php

class InvitadoRepository extends EntityRepository
{
    public function findOneByIdJoinedToCategory($id)
    {
        $query = $this->getEntityManager()
        ->createQuery('
            SELECT p, c FROM AcmeStoreBundle:Product p
            JOIN p.category c
            WHERE p.id = :id'
        )->setParameter('id', $id);

        try {
            return $query->getSingleResult();
        } catch (\Doctrine\ORM\NoResultException $e) {
            return null;
        }
    }
}

?>

所以这是它在我的项目中的样子:

http://dl.dropbox.com/u/29094109/respositoryextend.tiff

1 个答案:

答案 0 :(得分:6)

这个问题已经过时了,但如果您或有人查看此问题尚不知道答案,那么您需要告诉Doctrine为该实体使用自定义存储库类。

来自Symfony 2 Doctrine documentation的示例(使用注释;如果您愿意,您当然可以使用YAML或XML):

// src/Acme/StoreBundle/Entity/Product.php
namespace Acme\StoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="Acme\StoreBundle\Repository\ProductRepository")
 */
class Product
{
    //...
}