Bonjour,
Dans mon backend easyadmin, j'ai une entité qui écoute et enregistrer les actions faitres sur les autres entités (création, modification, suppression) pour avoir un historique. J'y stocke le nom de l'entité, l'id de l'entité, la date de modification et l'utilisateur qui a fait la modification, les champs modifiés avec leurs valeurs avant et après modification. Elle s'appele EntityHistory pour la suite de mon explication
Comme j'ai plusieurs entités écoutés, je n'ai pas fait de relation entre chacune de ses entités avec EntityHistory, ce ne me semblait être une bonne pratique vu le nombre d'entités concernés. (mais j'ai peut-être tord)

Actuellement, j'ai fais une version simplifié sur une seule entité et av ec juste la date a récuperé mais lros de l'affichage de la page-index, j'ai la valeur "inaccessible" au lieu d'avoir une date.
Pourtant quand je fais des dumps a différents étapes, j'ai bien des dates qui sont récupérés, le problème semble être uniquement à l'affichage.

le code de mon champs Date dans mon CRUD

DateTimeField::new('lastModificationDate', 'Date de modification')
                ->setVirtual(true)
                ->formatValue(function ($value, $entity) {
                        $historyRepository = $this->entityManager->getRepository(EntityHistory::class);
                        $date= $entity->getLastModificationDate($historyRepository);
                        dump($date);
                        return $date;
                })

la focntion getLastModificationDate dans l'entité ou je veux afficher la date

    public function getLastModificationDate(EntityHistoryRepository $historyRepository): ?\DateTime
    {
        return $historyRepository->findLastModificationDate($this->getId());
    }

la fonction findLastModificationDate dans EntityHistoryRepository

public function findLastModificationDate(int $entityId): ?\DateTime
    {
        $result = $this->createQueryBuilder('e')
            ->select('e.dateAction')
            ->where('e.entityId = :entityId')
            ->setParameter('entityId', $entityId)
            ->orderBy('e.dateAction', 'DESC')
            ->setMaxResults(1)
            ->getQuery()
            ->getOneOrNullResult();

        return $result ? $result['dateAction'] : null;
    }

Ce que je veux

Je voudrais dans chaque Page_Index de chaque entité (hors EntityHistory) récupéré la dernière date de modification et l'utilisateur, si cela est possible sans avoir défini de relation entre les entités.

Ce que j'obtiens
Actuellement, j'ai fais une version simplifié sur une seule entité et av ec juste la date a récuperé mais lros de l'affichage de la page-index, j'ai la valeur "inaccessible" au lieu d'avoir une date.
Pourtant quand je fais des dumps a différents étapes, j'ai bien des dates qui sont récupérés, le problème semble être uniquement à l'affichage.

3 réponses


Salut, tu vérifies bien que le retour de ta méthode findLastModificationDate ne renvoie pas null ?

La méthode (en tout cas celle actuelle car je continue de chercher même si pour l'instant je fais autrement) retoune bien des dates qui sont dans le BDD. Et j'ai essayé aussi quand j'ai aucune valeur dans la BDD et dans ce cas cela affiche "aucun" au lieu de "inaccessible" pour les autres qui ont une date.

alexandre06 si tu veux m'ajouter sur discord, on pourra poster la soluce ici si on trouve :)