Конструктор запросов Zend: мне нужно получить только отображаемое имя пользователя в зависимости от его принадлежности к группе

Я хочу получить только отображаемое имя пользователя, если он принадлежит группе с идентификатором 181. Я написал стандартный код сиквела, который делает это, но у меня действительно возникают проблемы с преобразованием его в рабочую версию Zend.

$stmt = $userTable->select()
->setIntegrityCheck(false)
->from( array('u' => $userTable->info('name')))
->joinLeft( array('gm' => $membershipTable->info('name')), 'gm.user_id = u.user_id')
->joinLeft(array('g' => $groupsTable->info('name')), 'g.group_id = gm.resource_id')
->columns('u.displayname')
->where('g.group_id = ?', 181);

$result = $userTable->getAdapter()->fetchAll($stmt);

Вместо того, чтобы возвращать небольшой набор данных, который я хочу, он возвращает эквивалент SELECT *.

Любая помощь будет принята с благодарностью. Заранее спасибо.

1

Решение

Вы можете легко сделать это, добавив имя столбца в массив.

$stmt = $userTable->select()
->setIntegrityCheck(false)
->from( array('u' => $userTable->info('name')),array('u.username'))
->joinLeft( array('gm' => $membershipTable->info('name')), 'gm.user_id = u.user_id')
->joinLeft(array('g' => $groupsTable->info('name')), 'g.group_id = gm.resource_id')
->columns('u.displayname')
->where('g.group_id = ?', 181);

$result = $userTable->getAdapter()->fetchAll($stmt);

Если вам не нужен какой-либо столбец, вы можете сделать это так.

-> joinLeft (массив (‘gm’ => $ membersTable-> info (‘name’)), ‘gm.user_id = u.user_id’, array ())

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]