Я хочу получить только отображаемое имя пользователя, если он принадлежит группе с идентификатором 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 *.
Любая помощь будет принята с благодарностью. Заранее спасибо.
Вы можете легко сделать это, добавив имя столбца в массив.
$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 ())
Других решений пока нет …