2013-03-18 2 views
1

У меня есть пользовательский объект. Он реализует базовый пользовательский интерфейс.
Я хочу сортировать пользователей по ролям, и я не знаю, как это сделать.Сортировка пользователей symfony по ролям

(это для отправить сообщение для моих администраторов только с объектом сообщения, который нацеливает объект пользователя на ManyToOne отношения)

+0

но как работает сортировка? по имени? по количеству ролей? – mkjasinski

+0

Я хочу найти только своих администраторов (ROLE_ADMIN) в моем субъекте пользователей – rudak

ответ

0
$query = $this->getDoctrine()->getEntityManager() 
      ->createQuery(
       'SELECT u FROM MyBundle:User u WHERE u.roles LIKE :role' 
      )->setParameter('role', '%"ROLE_MY_ADMIN"%'); 

$users = $query->getResult(); 

Разгрузите работу на ваш сервер БД. Этот запрос не заставит себя долго ждать, даже с 100 000+ записей.

0

ОК, может быть, что:

// $users - users from db, collection of user entity class 
$myAdmins = array(); 
foreach($users as $user){ 
    if (in_array('ROLE_ADMIN', $user->getRoles())) { 
     $myAdmins[] = $user; 
    } 
} 

в $myAdmins имеет пользователей с ROLE_ADMIN роль.

+0

, если у меня есть 123 000 пользователей в моем db, это решение потребляет много памяти – rudak

+0

ok, 'role' в db хранятся в виде сериализуемой строки, поэтому поиск по нему isn 't приятное решение для меня - это добавить поле в пользовательскую таблицу, которое указывает, что у пользователя есть 'ROLE_ADMIN', а не для всех пользователей, которые задают это поле. – mkjasinski

+0

Эта система ролей, содержащихся в массивах, предотвращает все виды из базы данных. какое дерьмо для получения админов или кого-то еще по ролям. – rudak

Смежные вопросы