2016-05-22 3 views
2

Я использую FOSUserBundle, и мне нужно получить имена пользователей, которые написали комментарии на мой пост.Получить имя пользователя с помощью queryBuilder join using FOSUserBundle

Я использую функцию createQuery, чтобы получить пост комментарии, и добавить присоединиться к попытке получить имена:

<?php 

namespace CommentsBundle\Entity; 

use FOS\UserBundle\Entity\User; 

/** 
* CommentsRepository 
* 
* This class was generated by the Doctrine ORM. Add your own custom 
* repository methods below. 
*/ 
class CommentsRepository extends \Doctrine\ORM\EntityRepository 
{ 
    public function getPostComments($planId) 
    { 
     $arrPlanComments = array(); 

     $query = $this->getEntityManager()->createQuery(

      'SELECT 
      c.id, 
      c.fkUser, 
      c.fkReply, 
      c.comment, 
      c.createdAt, 
      c.likes, 
      c.unlikes 
      FROM CommentsBundle:Comments c 
      INNER JOIN UserBundle:User u 
      WITH (c.fkUser = u.id) 
      WHERE 
      c.fkPlan = :planId 
      ORDER BY c.createdAt DESC' 

     )->setParameter('planId', $planId); 

     try 
     { 
      $arrPlanComments = $query->getArrayResult(); 
     } 
     catch(\Doctrine\ORM\NoResultException $ex) 
     { 
      echo $ex->getMessage(); 
     } 

     return $arrPlanComments; 
    } 

} 

я продлил FOSUserBundle на мой пользовательский расслоению под названием «UserBundle», и она отлично работает , но я не знаю, как добавить отношения с этим объектом.

Я имею эту ошибку, когда я добавить отношение присоединиться:

[Semantical Error] line 0, col 164 near 'UserBundle:User': Error: Class 'UserBundle\Entity\User' is not defined.

Что не так?

ответ

2

Согласно документации, вы должны указать create own class для пользовательского объекта, который будет расширять один из предоставленных FOSUser. Похоже, вы этого не сделали. Вероятно, это сообщение об ошибке.

+0

Спасибо, что это работает !. Я забыл этот шаг установки. ;) – viher