php - 将自定义实体存储库与 FOSUserBundle 结合使用

标签 php symfony repository entity fosuserbundle

我已将 FOSUserBundle 添加到我的应用程序中,并希望使用我自己的实体存储库。

我的应用程序由多个实体组成;用户、作业、文件和评论。自从我添加了 FOSUserBundle 以来,我已经能够重新映射所有内容,以便用户/作业/文件/评论都按应有的方式链接,但我在分析器中注意到查询数量增加了。

例如,为了显示用户个人资料页面,现在单独查询数据库以获取用户信息、与该用户相关的作业以及与这些作业相关的评论。以前,一个查询将使用我的存储库中的查询来获取所有这些信息。

由于 showAction Controller 现在由 FOSUserBundle 提供,因此我的存储库未被使用。

除了覆盖 Controller (这对于我想做的事情来说似乎有点过分)之外,还有其他方法来调用我自己的存储库吗?

编辑:添加实体代码:

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="Test\TestBundle\Entity\Repository\TestUserRepository")
* @ORM\Table(name="users")
* @ORM\HasLifeCycleCallbacks
*/
class TestUser extends BaseUser
{
    // entity defintitions...
}

存储库代码(我曾经在 showAction 方法中调用它,现在仍想使用):

use Doctrine\ORM\EntityRepository;

class TestUserRepository extends EntityRepository
{
    public function getUser($userId)
    {
        $qb = $this->createQueryBuilder('u')
                   ->select('u, j')
                   ->leftJoin('u.jobs', 'j')
                   ->leftJoin('u.files', 'f')
                   ->leftJoin('u.comments', 'c')
                   ->where('u.id = :userId')
                   //->addOrderBy('j.dateCreated', 'ASC')
                   ->setParameter('userId', $userId)
                   ;

        return $qb->getQuery()
                  ->getResult();
    }
}

最佳答案

是的,您可以在实体中定义自定义存储库。

/**
 * @ORM\Entity(repositoryClass="Foo\UserBundle\Entity\Repository\UserRepository")
 * @ORM\HasLifecycleCallbacks
 * @ORM\Table(name="user")
 */
class User extends BaseUser
{
  ...
}

关于php - 将自定义实体存储库与 FOSUserBundle 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899403/

相关文章:

php - 如何在 Zend Framework 2 中编写 Like 查询

php - 通过 PHP 从字符串中删除特定的 XML 标签

php - 如何使用PJAX? (使用 PHP 的 PJAX?)

symfony - 奏鸣曲管理包 : Adding link to related entities in configure list

mercurial - 不信任来自不受信任的用户 root、dev 组的文件 .hg/hgrc

templates - SingleThreaderDialog.Exception.NoValidMappingDetailsFound

php - Laravel:不允许写入/.../.config/psysh

php - Symfony 和 Willdurand/Hateoas Bundle - JSON 响应上没有链接

symfony - 在 Symfony2 中生成路径附加查询字符串

java - CrudRepository 上的 NullPointerException