2016-06-20 15 views
1

ユーザーとパスをグループ化しようとしましたが、作成された列に基づいてユーザーごとに1つのパスを制限しようとしています。以下は私の結果であるが、問題はそのuser_idのである(1)パスが列別のグループ化(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

​​

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を使用してくださいeトリック。もしあなたがdqlに固執したいならば->select('u.id as user_id)->distinct()