SQL and performance improvements (#2017)

This commit is contained in:
Kevin Papst
2020-10-23 00:31:53 +02:00
committed by GitHub
parent 6ed7ee76e7
commit 4533c994a3
14 changed files with 216 additions and 206 deletions

View File

@@ -11,6 +11,7 @@ namespace App\Repository;
use App\Entity\Role;
use App\Entity\User;
use App\Repository\Loader\UserIdLoader;
use App\Repository\Loader\UserLoader;
use App\Repository\Paginator\LoaderPaginator;
use App\Repository\Paginator\PaginatorInterface;
@@ -56,16 +57,15 @@ class UserRepository extends EntityRepository implements UserLoaderInterface
*/
public function getUserById($id): ?User
{
return $this->createQueryBuilder('u')
->select('u', 'p', 't', 'tu', 'tl')
->leftJoin('u.preferences', 'p')
->leftJoin('u.teams', 't')
->leftJoin('t.users', 'tu')
->leftJoin('t.teamlead', 'tl')
->where('u.id = :id')
->setParameter('id', $id)
->getQuery()
->getOneOrNullResult();
/** @var User|null $user */
$user = $this->findOneBy(['id' => $id]);
if ($user !== null) {
$loader = new UserIdLoader($this->getEntityManager());
$loader->loadResults([$user->getId()]);
}
return $user;
}
/**
@@ -127,17 +127,21 @@ class UserRepository extends EntityRepository implements UserLoaderInterface
*/
public function loadUserByUsername($username)
{
return $this->createQueryBuilder('u')
->select('u', 'p', 't', 'tu', 'tl')
->leftJoin('u.preferences', 'p')
->leftJoin('u.teams', 't')
->leftJoin('t.users', 'tu')
->leftJoin('t.teamlead', 'tl')
/** @var User|null $user */
$user = $this->createQueryBuilder('u')
->select('u')
->where('u.username = :username')
->orWhere('u.email = :username')
->setParameter('username', $username)
->getQuery()
->getOneOrNullResult();
if ($user !== null) {
$loader = new UserIdLoader($this->getEntityManager());
$loader->loadResults([$user->getId()]);
}
return $user;
}
public function getQueryBuilderForFormType(UserFormTypeQuery $query): QueryBuilder