получить все группы от пользователей - sfDoctrineGuardPlugin

В sfDoctrineGuardPlugin есть:

sfGuardUser:
  actAs: [Timestampable]
  columns:
    first_name: string(255)
    last_name: string(255)
    //
  indexes:
    is_active_idx:
      fields: [is_active]
  relations:
    Groups:
      class: sfGuardGroup
      local: user_id
      foreign: group_id
      refClass: sfGuardUserGroup
      foreignAlias: Users



sfGuardGroup:
  actAs: [Timestampable]
  columns:
    name:
      type: string(255)
      unique: true
    description: string(1000)
  relations:
    Users:
      class: sfGuardUser
      refClass: sfGuardUserGroup
      local: group_id
      foreign: user_id
      foreignAlias: Groups

sfGuardUserGroup:
  options:
    symfony:
      form:   false
      filter: false
  actAs: [Timestampable]
  columns:
    user_id:
      type: integer
      primary: true
    group_id:
      type: integer
      primary: true
  relations:
    User:
      class: sfGuardUser
      local: user_id
      onDelete: CASCADE
    Group:
      class: sfGuardGroup
      local: group_id
      onDelete: CASCADE

Это отношение многие ко многим, и как я могу получить все группы пользователей?

  • @method Doctrine_Collection
    getGroups() Возвращает коллекцию «Группы» текущей записи.

я делаю:

$this->groups = $this->getUser()->getGuardUser()->getGroups();

это возвращение:

 Doctrine_Collection data : Array( ) 

как я могу проверить, находится ли пользователь в группе TEST?

Спасибо за помощь!


person Tony Oriondo    schedule 29.06.2011    source источник


Ответы (2)


См. класс sfGuardSecurityUser: https://github.com/Garfield-fr/sfDoctrineGuardPlugin/blob/master/lib/user/sfGuardSecurityUser.class.php

if ($this->getUser()->hasGroup('TEST')) {
    //if user is on group TEST
}//end if

// get all groups

$userGroups = $this->getUser()->getGroups();
person turbod    schedule 30.06.2011
comment
спасибо, но я использую $userGroups, тогда у меня есть: ‹pre› Данные Doctrine_Collection: Array(0: Object(sfGuardGroup)) ‹/pre› как я могу это показать? :) foreach и .. ? - person Tony Oriondo; 01.07.2011
comment
@Tony Oriondo: если вы не настроили группы для своего пользователя, метод getGroups вернет пустой массив. Вы уверены, что установили группу для своего пользователя? - person turbod; 03.07.2011

вы можете попробовать использовать запрос для поиска групп вашего пользователя:

$user_id = $this->getUser()->getGuardUser()->getId();
$groups = Doctrine_core::getTable('sfGuardGroup')->create_query('g')->innerJoin('g.users u with u.id= ?', $user_id);
person dxb    schedule 30.06.2011