当用户要求登录时加载实体

时间:2013-12-08 10:31:00

标签: php symfony doctrine entity

我有一个包含两个其他实体(角色和客户)的用户实体,我想在用户要求登录时加载它们。

在我的UserRepository中我有这个方法:

<?php
public function loadUserByUsername($username)
{
    $q = $this
        ->createQueryBuilder('u')
        ->select('u, g, c')
        ->leftJoin('u.role', 'g')
        ->leftJoin('u.customer', 'c')
        ->where('u.username = :username')
        ->setParameter('username', $username)
        ->getQuery();

try {
    $user = $q->getSingleResult();
} catch (NoResultException $e) {
    $message = sprintf('Unable to find an unique user MyProjectUserBundle:User object identified by "%s".', $username);
    throw new UsernameNotFoundException($message, null, 0, $e);
}

    return $user;
}

但是,在每个页面中,当我第一次接受客户或角色时,它会发出请求:

  • SELECT t0.id AS id1,t0.name AS [...] FROM users t0 WHERE t0.id =?

  • SELECT t0.id AS id1,t0.name AS [...] FROM groups t0 WHERE t0.id =?

  • SELECT t0.id AS id1,t0.name AS [...] FROM customers t0 WHERE t0.id =?

我希望Doctrine在提交登录表单时一劳永逸地加载它们。

以下是我的用户提供商代码:

providers:
    users:
        entity: { class: MyProjectUserBundle:User }

感谢您的帮助。

0 个答案:

没有答案