Symfony createQuery выигрывает за несколькими столами - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы восстановить пользователя, написавшего сообщение, только у меня возникает ошибка, когда я пытаюсь это сделать "Attempted to call an undefined method named "getIdPost" of class "App\Entity\User"."

$em = $this->getDoctrine()->getManager();
                $query = $em->createQuery( //creation de la requête
                    'SELECT p , u
                    FROM App\Entity\User u, App\Entity\Post p
                    WHERE p.Id_Post_Parent IS NULL
                    AND p.Id_User = u.idUser
                    ORDER BY p.Post_Date_Time DESC'
                )->setMaxResults(10);
                $posts = $query->getResult();

                $publicPosts = array();
                $comments = array();
                for($i = 0; $i<sizeof($posts) ; $i++){
                    $publicPosts[$i] = $posts[$i]->getArray();
                    //récupération des commentaires
                    $em = $this->getDoctrine()->getManager(); //on appelle Doctrine
                    $query = $em->createQuery( //creation de la requête
                        'SELECT p , u
                        FROM App\Entity\User u, App\Entity\Post p
                        WHERE p.Id_Post_Parent = :idParent
                        AND p.Id_User = u.idUser'
                    )->setParameter('idParent', $posts[$i]->getIdPost())
                    ->setMaxResults(10); //On limite à 10 commentaires par posts
                    $comments[$i] = $query->getResult(); //variable qui récupère la requête
                }

Если я удаляю сущность User из запроса,работает и у меня нет ошибки ... Я не понимаю, с чем это связано, почему он говорит мне, что у пользователя нет метода "getIdPost"?Это нормально, так как это метод «Post»: x

1 Ответ

0 голосов
/ 13 февраля 2019

Вы хотели бы, чтобы пользователь, который написал сообщение, было немного странно получать его из запроса, разве у вас нет $ post-> getUser ()?Я думаю, что вы должны присоединиться к столу, чтобы достичь этого

       $query = $em->createQuery( //creation de la requête
           'SELECT u
            FROM App\Entity\User u, 
            LEFT JOIN App\Entity\Post p on p.Id_User = u.idUser
            WHERE p.Id_Post_Parent IS NULL
            ORDER BY p.Post_Date_Time DESC'
        )->setMaxResults(10);
...