Premiere question dans le model tu as bien l'association ?
2° que donne le result avec juste ->contain(['Users'])
EDIT : nouvelle requête, plus simple.
Bonjour,
Voici la requête fonctionnant dans phpMyAdmin :
Le but étant d'afficher seulement la dernière séance de chaque membre. Car un membre peut avoir plusieurs séances, mais à l'affichage sur l'index, j'aimerai lister que la séance la plus récente de chaque membre.
J'enregistre donc la dernière séance (last_seance_id) dans la table user.
Malheureusement, je n'arrive pas utiliser un champs se trouvant dans un contain. Pour l'instant, je n'ai que ceci :
Ce qui me donne en SQL :c0 à la place de Users.last_seance_id, il ne prend pas en compte mon champs:
Donc comment utiliser un champs se trouvant dans un contain (dans user, je veux last_seance id) pour le comparer par la suite avec l'id de la séance ?
Merci d'avance.
4 réponses
Petit Up s'il vous plait. J'ai éditer complètement mon message ci-dessus car j'ai revu toute ma requête SQL.
Dans SeancesController.php :
Dans SeanceUsersTable.php :
Dans UsersTable.php :
Avec une requête simple comme ceci :
Ça me donne ceci dans la table seance_users :
Mais avec ce code là (en groupant par rapport à user_id) :
J'aurai voulu avoir :
(résultat obtenu avec ma requête SQL dans mon premier message)
Mais ça me donne ça :
En gros, le group sur user_id me prend le plus petit id de la séance (soit la première séance du membre) alors que j'aimerai qu'il me donne le dernier id de la séance du membre ! une sorte de group by sur user_id mais desc sur l'id de la séance.
Je dois buguer quelque part, et pourtant ça ne doit pas être compliqué à récupérer ce genre d'info (comme récupérer le dernier article pour chaque catégorie, récupérer le dernier sujet de chaque forum etc).
Bonjour,
J'ai résolu mon problème en faisant autrement : dans ma table seance_users, j'ai rajouté un champs is_last prenant comme valeur 0 ou 1. Ainsi, lorsque je rajoute une séance, je mets la nouvelle séance à 1 et l'ancienne à 0, et à l'index, je fais une requête en prenant en compte is_last = 1 dans le where.
Beaucoup plus simple, moins prise de tête. Merci quand même.