1 pièce(s) jointe(s)
Modifier un tableau car optimisé
Bonjour,
J'ai un tableau mais je souhaite le modifier car pas optimisé.
Ce que je souhaite avoir en sortie :
Un tableau avec comme clé l'id du membre et comme valeur le nombre de message non lu. Plus logique que la photo ci-dessous non ? :koi:
voici le tableau actuel en photo
Pièce jointe 564238
Voici mon repository :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
/**
* Récupère le nombre de messages non lus pour chaque conversation
*
* @param integer $userId
*/
public function unreadCount(int $userId)
{
return $this->createQueryBuilder("message")
->select("author.id, count(message.id) as nb")
->join("message.author", "author")
->andWhere("message.recipient = :recipient")->setParameter("recipient", $userId)
->andWhere("message.readAt is NULL")
->groupBy("author.id")
->getQuery()->execute(null, Query::HYDRATE_ARRAY);
} |
Voici mon controller :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
/**
* @Route("/inbox", name="inbox")
*
* @IsGranted("ROLE_USER")
*/
public function index(UserRepository $userRepository): Response
{
return $this->render('message/index.html.twig', [
'users' => $userRepository->findAll(),
'unread' => $this->repository->unreadCount($this->getUser()->getId())
]);
} |
et Voici la vue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
{{ dump(unread) }}
{% for user in users %}
{% if app.user.id != user.id %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.firstName }}</td>
<td>
{% for arr in unread %}
{% if arr["id"] == user.id %}
{{ arr["nb"] }}
{% endif %}
{% endfor %}
</td>
<td>
<a href="{{ path('messages_show', {'id': user.id}) }}">Ecrire à ce membre</a>
</td>
</tr>
{% endif %}
{% else %}
<tr>
<td colspan="4">no records found</td>
</tr>
{% endfor %} |
J'ai diminué le code au maximum afin de ne pas faire un trop long post sur le forum.
Je vous remercie