1
내가 심포니 호출기에서 페이지 당 1 개 행을 설정하고
당 설정하지만 보여주는 것보다 더 많은 데이터를 제공합니다 특정 사용자에 대한 '라이센스'테이블에 여러 항목이있는 경우 'sfGuardUser'행을 선택하십시오! 여기 내 쿼리입니다 :심포니의 교리 매김 내 쿼리가 다른 테이블과 sfGuardUser 테이블에 합류 방치하고 중복을 일으키는 원인이되기 때문에이 1보다 더 많은 데이터를 페이지
$pager = new sfDoctrinePager('sfGuardUser', '1');
$q = Doctrine_Query::create()
->select('u.id, u.username, g.name, l.id, l.status, l.client_id, l.vendor_id, l.applied_date, p.org_name')
->from('sfGuardUser u')
->leftJoin('u.Profile p')
->leftJoin('u.Groups g')
->leftJoin('u.LicensedClients l')
->where('g.name = \'vendor\'')
->orderBy('l.applied_date');
$q->setHydrationMode(Doctrine_Core::HYDRATE_SCALAR);
$pager->setQuery($q);
$pager->setPage($request->getParameter('page', 1));
$pager->init();
페이지 매김이,하지만 문제는 라이센스 테이블에서 특정 사용자에 대한 여러 행이 한 페이지에 표시된 여러 행이있는 경우입니다. 올바른 방법으로 어떻게 구현할 수 있습니까?
DISTINCT를 사용할 수 있습니다. GROUP BY를 사용하는 것이 더 좋습니다. – Flukey
@ domi27 :이 경우 GROUP BY는 수행하지 않습니다. 쿼리에서 반환 된 데이터 집합을 페이지 매기기를 원합니다. 이 경우 3 명의 사용자 (a, b, c)가 있고 사용자 a에는 3 개의 다른 라이센스가 있고 다른 사용자에게는 none이 있다고 합니다. 사용자의 3 행을 생성 합류 'A'의 라이센스 정보와 사용자 'B'및 라이센스 관련 항목에 널 (null) 값이 "C"에 대한 2 이상의 행에 대응. 이 결과 집합을 페이지 매기기를 원합니다. 현재 그것이 다음 번에 모든 사용자 'A'와 관련된 데이터를 표시하는 하나의 다른 하나를 통해 페이지 매김되도록 페이지 매김 .. – med