显示symfony中的用户列表



在我的symfony项目中,我有一个函数,根据用户的"角色"显示用户列表。这里是控制器代码

/**
* @Route("/admin", name="admin_index", methods={"GET"})
*/
public function index(): Response
{
$Admins=$this->getDoctrine()->getRepository(User::class)->findBy(['roles' => array('["ROLE_ADMIN"]')]);
return $this->render('back/admin/index.html.twig', [
'admins' => $Admins,
]);
}

这是渲染

<table class="table" >
<thead>
<tr>
<th>Id</th>
<th>Nom</th>
<th>Email</th>
<th>Tel</th>
<th>Photo</th>
</tr>
</thead>
<tbody>
{% for admin in admins %}
<tr name="elements" id="{{ 'admin'~ admin.id}}">
<td>{{ admin.id }}</td>
<td>{{ admin.nom }}</td>
<td>{{ admin.email }}</td>
<td>{{ admin.tel }}</td>
<td><a href="{{ asset('/Uploads/Images/' ~ admin.photo) }}">{{ admin.photo }}</a></td>
<td>
</td>
</tr>
{% else %}
<tr>
<td colspan="10">Rien a afficher</td>
</tr>
{% endfor %}
</tbody>
</table>

这里的问题是,即使数据库已满,他也不显示任何内容

这里是实体声明

/**
* @var string
*
* @ORMColumn(name="roles", type="json")
* @Groups ("post:read")
*/
private $roles;

,这是表格结构的截图

输入图片描述

从早上开始我就被卡住了,我不知道为什么

因为roles字段是json,所以findBy不会这样工作。

您应该在您的UserRepository.php类中创建一个函数,使用QueryBuilder按角色选择用户

public function findByRole($role)
{
return $this->createQueryBuilder('u')
->andWhere('u.roles LIKE :role')
->setParameter('role', "%{$role}%")
->getQuery()
->getResult();
}

你可以从你的控制器中调用这个函数

$admins = $this->getDoctrine()->getRepository(User::class)->findByRole("ROLE_ADMIN");

我还建议您在控制器中使用var_dump($admins);来查看Doctrine是否首先返回任何内容给您。

你甚至可以转储变量在树枝{{ dump(admins) }}

最新更新