2013-03-18 23 views
1

我有一個用戶實體。它實現了基本的用戶界面。
我想按角色排序我的用戶,我不知道該怎麼做。按角色對symfony用戶進行排序

(這是送我的管理員的消息只與誰的目標是在多對一關係的用戶實體的消息實體)

+0

但工作排序如何?按名字?按角色數量? – mkjasinski 2013-03-18 11:01:23

+0

我想在我的用戶實體 – rudak 2013-03-18 11:15:16

回答

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

中找到只有我的管理員(ROLE_ADMIN),如果我的數據庫中有123000個用戶,則此解決方案會佔用大量內存 – rudak 2013-03-18 13:07:12

+0

ok,db中的'roles'存儲爲可串行化的字符串,對我來說,解決方案是在用戶表中添加字段,該字段表示用戶具有ROLE_ADMIN,並且獲取所有設置該字段的用戶。 – mkjasinski 2013-03-18 13:12:19

+0

這個包含在數組中的角色系統阻止了數據庫中的所有排序。什麼是管理員或任何其他角色的狗屎。 – rudak 2013-03-18 13:21:44