2016-06-20 2 views
1

Я пытаюсь группировать пользователей и путь и ограничивать 1 путь для каждого пользователя на основе созданного столбца. Ниже приведены мои результаты, проблема заключается в том, что user_id (1) встречается в два раза, так как путь отличаетсяCant group by column (Doctrine 2 + Mysql 5.7)

РЕЗУЛЬТАТ

{ 
    "user_id": 1, 
    "lastname": "Short", 
    "firstname": "Admin", 
    **"path": "/dashboard"** 
}, 
{ 
    "user_id": 1, 
    "lastname": "Short", 
    "firstname": "Admin", 
    **"path": "/works"** 
}, 
{ 
    "user_id": 2, 
    "lastname": "Administrator", 
    "firstname": "John", 
    "path": "/dashboard" 
} 

ENTITIES

user => | id | firstname | lastname | profile_image | created 

beat => | id | user_id(rel) | created | path 

QueryBuilder (Symfony)

 return $this 
     ->createQueryBuilder('b') 
     ->select(' 
      u.id as user_id, 
      u.lastname, 
      u.firstname, 
      u.profile_image, 
      b.path 
     ') 
     ->join('b.user', 'u') 
     ->groupBy('u.id, b.path') 
     ->getQuery() 
     ->getArrayResult(); 

ответ

1

Если вы хотите получать каждого пользователя только один раз, используя DISTINCT(u.id) AS user_id, необходимо сделать трюк. Если вы хотите придерживаться dql ->select('u.id as user_id)->distinct()