Запрос в форме Symfony ⇐ Php
Запрос в форме Symfony
В моей таблице пользователей есть столбец ролей, у простых пользователей есть только ROLE_USER:
[0 => "ROLE_USER"] И пользователи-администраторы имеют две роли:
[ 0 => "РОЛЬ_АДМИН" 1 => "РОЛЬ_ПОЛЬЗОВАТЕЛЬ" ] Я создаю форму «MessageType», в этой форме пользователи могут отправлять сообщения только администраторам, а администраторы — пользователям. но у меня проблема в построителе запросов
->add('recipient', EntityType::class, [ "класс" => Пользователи::класс, "query_builder" => функция (UsersRepository $repository): QueryBuilder { $roles = $_SESSION["user_roles"]; if($roles[0] !== 'ROLE_ADMIN') { верните $repository->createQueryBuilder('u') ->where("u.roles = 'ROLE_ADMIN'"); ==========> ЗДЕСЬ }еще{ верните $repository->createQueryBuilder('u') ->orderBy("u.firstname", "ASC"); } }, В этих EntityTypes мой выбор должен возвращать всех пользователей, если зарегистрированный пользователь является администратором, или только администраторов, если зарегистрированный пользователь является простым пользователем.
И это работает только тогда, когда вошедший пользователь является администратором, но не тогда, когда он простой пользователь, и проблема в этой строке:
->where("u.roles = 'ROLE_ADMIN'"); это не работает, потому что у администратора две роли => [0 => "ROLE_ADMIN" 1=> "ROLE< код>_USER]
Так что мне нужно сделать:
->where("u.roles[0] = 'ROLE_ADMIN'"); И я не знаю, как это сделать в SQL
изменить: роли — это столбец типа json в таблице «Мои пользователи»
Спасибо за помощь
В моей таблице пользователей есть столбец ролей, у простых пользователей есть только ROLE_USER:
[0 => "ROLE_USER"] И пользователи-администраторы имеют две роли:
[ 0 => "РОЛЬ_АДМИН" 1 => "РОЛЬ_ПОЛЬЗОВАТЕЛЬ" ] Я создаю форму «MessageType», в этой форме пользователи могут отправлять сообщения только администраторам, а администраторы — пользователям. но у меня проблема в построителе запросов
->add('recipient', EntityType::class, [ "класс" => Пользователи::класс, "query_builder" => функция (UsersRepository $repository): QueryBuilder { $roles = $_SESSION["user_roles"]; if($roles[0] !== 'ROLE_ADMIN') { верните $repository->createQueryBuilder('u') ->where("u.roles = 'ROLE_ADMIN'"); ==========> ЗДЕСЬ }еще{ верните $repository->createQueryBuilder('u') ->orderBy("u.firstname", "ASC"); } }, В этих EntityTypes мой выбор должен возвращать всех пользователей, если зарегистрированный пользователь является администратором, или только администраторов, если зарегистрированный пользователь является простым пользователем.
И это работает только тогда, когда вошедший пользователь является администратором, но не тогда, когда он простой пользователь, и проблема в этой строке:
->where("u.roles = 'ROLE_ADMIN'"); это не работает, потому что у администратора две роли => [0 => "ROLE_ADMIN" 1=> "ROLE< код>_USER]
Так что мне нужно сделать:
->where("u.roles[0] = 'ROLE_ADMIN'"); И я не знаю, как это сделать в SQL
изменить: роли — это столбец типа json в таблице «Мои пользователи»
Спасибо за помощь
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение