Подход, который будет запрашивать у всех пользователей , но даст вам массив в порядке, который вы описываете:
$users = $userRepository->findall();
foreach ($users as $user) {
$this->getUser() == $user ? $currentUser[] = $user : $otherUsers[] = $user;
}
$myUserList = array_merge($currentUser, $otherUsers);
Два sidenotes: 1: Этот запросвсе пользователи, а затем разделяет их.Я не уверен, что это может быть то, что вы хотите. 2: , если в данный момент не зарегистрирован ни один пользователь, этот код не будет работать, поскольку $currentUser
не будет определен.Конечно, вы можете изменить его, чтобы он также работал, когда ни один пользователь не вошел в систему.
Редактирование на основе того факта, что возвращение построителя запросов является обязательным:
Выможно использовать CASE
для тестирования и создания свойства, которое вы можете скрыть с помощью AS HIDDEN
в своем запросе, а затем упорядочить по этому скрытому свойству следующим образом:
public function currentUserFirst($userId){
$qb = $this->createQueryBuilder('u')
->select('u, CASE WHEN u.id = :userId THEN 0 ELSE 1 END AS HIDDEN order')
->setParameter('userId', $userId)
->orderBy('order', 'ASC');
return $qb;
}