Я не знаю easyAdmin, но этот DQL не вычисляется.
dql_filter: "'ROLE_WEBMASTER' IN entity.sqlRoles()"
Вы должны помнить, что все, что вы пишете на DQL, должно в конечном итоге переводиться на обычный старый SQL. Это означает, что использование методов сущностей не будет работать.
Подумайте об этом: эти методы нельзя использовать до тех пор, пока не будет создан экземпляр объекта, и не могут быть созданы до тех пор, пока не будет получено и не произойдет извлечение только когда выполняется оператор SQL , поэтому фильтрация WHERE
не может быть выполнена в этот момент.
Проблема в том, что с vanilla Doctrine вы не сможете фильтровать по содержимое свойства JSON, в основном с использованием JSON_CONTAINS , которое Doctrine не включает поддержку.
Однако не вся надежда потеряна. Доступны расширения, которые добавляют поддержку этих функций для различных серверных частей, например .
Если вы установите и включите его, вы можете изменить свой фильтр DQL на:
dql_filter: "JSON_CONTAINS(entity.roles, '\"ROLE_WEBMASTER\"', '$')"
Если вы приложите немного усилий, чтобы связать все вместе, это должно сработать.
К сожалению, поскольку вы используете SQLite, вы не сможете использовать вышеперечисленное. SQLite отлично подходит для разработки и использования встраиваемых систем, но он не так богат, как полноценные СУБД.