Zend 查询构建器:我只需要根据用户在组中的成员身份获取用户的显示名称

Zend query builder: I need to get just the display name of a user based on their membership to a group

如果用户属于 ID 为 181 的组,我只想获取用户的显示名称。我已经编写了执行此操作的标准 sequel 代码,但我确实无法转换它变成一个工作的 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);

它没有返回我想要的小数据集,而是 returns 相当于 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( array('gm' => $membershipTable->info('name')), 'gm.user_id = u.user_id',array())