Похоже, в коде происходит довольно много вещей:
1) $us->getRepository('AppBundle:Usr')
, вероятно, опечатано и должно быть взамен $us->getRepository('AppBundle:User')
(?) Как правило, было бы безопаснее использовать $us->getRepository(AppBundle\User::class)
, чтобы синтаксические ошибки могли быть обнаружены легче / раньше.
2) Вы пытаетесь вызвать метод хранилища для массива с $locationus->getNbr()
, что неверно для нескольких учетных записей (нельзя вызывать функции для массивов - и методы хранилища также нельзя вызывать из сущностей).
3) почему код использует echo?
4) в качестве дополнительного примечания (при условии, что это приблизительно полный предполагаемый код), имеет смысл переместить все методы получения и обработки в раздел if, чтобы код работал лучше (он не делает ненужных запросы к базе данных и т. д., когда у пользователя недостаточно прав для доступа к представлению / информации).
Если я правильно понял намерение, в этом случае вторая функция хранилища getNbr
здесь излишня. Если он намеревается просто рассчитать количество экземпляров, возвращаемых первой находкой:
$locationus = $us->getRepository('AppBundle:User')->findBy(['roles' => ["ROLE_USER"] ]);
$nb_us = count($locationus);
Или, в качестве альтернативы (если вы хотите использовать и исправить getNbr
функцию хранилища), тогда вам не нужен первый метод получения хранилища. Для этого также потребуется переписать функцию хранилища:
$nb_us = $us->getRepository('AppBundle:User')->getNbr("ROLE_USER");