Я работаю над пользовательским интерфейсом администратора для управления записями sfGuardGroupPermission, в основном позволяя пользователю предоставлять / удалять разрешения для всех групп пользователей в системе в одном интерфейсе.
Используемый мной запрос работаетпрекрасно, когда выполняется непосредственно в базе данных, но при выполнении и гидратации через Doctrine, похоже, большинство его записей удаляется.
Рассмотрим следующий пример:
- У меня есть одна запись в таблице
sf_guard_group_permission
- У меня есть 62 записи в таблице
sf_guard_permission
- У меня 42 записей в
sf_guard_group
таблице
Я использую объект Doctrine_RawSql
для построения запроса, это выглядит следующим образом:
$q->select('{p.*}, {gp.*}, {g.*}')
->from('sf_guard_permission p
LEFT OUTER JOIN sf_guard_group_permission gp ON p.id = gp.permission_id
LEFT OUTER JOIN sf_guard_group g ON g.id = gp.group_id')
->addComponent('gp', 'sfGuardGroupPermission gp')
->addComponent('p', 'gp.Permission p')
->addComponent('g', 'gp.Group g');
И если я получаю необработанный sqlиспользуя getSqlQuery()
я получаю следующее (которое возвращает правильный результат - список всех разрешений, оставленных присоединенными любыми группами, имеющими эти разрешения ...
SELECT gp.group_id AS gp__group_id, gp.permission_id AS gp__permission_id, gp.created_at AS gp__created_at, gp.updated_at AS gp__updated_at, p.id AS p__id, p.name AS p__name, p.description AS p__description, p.section_model_id AS p__section_model_id, p.created_at AS p__created_at, p.updated_at AS p__updated_at, g.id AS g__id, g.name AS g__name, g.description AS g__description, g.created_at AS g__created_at, g.updated_at AS g__updated_at
FROM sf_guard_permission p
LEFT OUTER JOIN sf_guard_group_permission gp
ON p.id = gp.permission_id
LEFT OUTER JOIN sf_guard_group g
ON g.id = gp.group_id
Когда я запускаю запрос через доктрину и var_dump
мой результат Doctrine_Collection
Мне всего 2 записи.Первая запись соответствует записи sf_guard_group_permission, которую я имею в своей таблице (правильно), вторая запись имеет значение group_id, равное нулю, но содержит некоторую допустимую sf_guard_permission
информацию.Это кажется немного странным.
Может кто-нибудь подсказать, где я ошибаюсь?