首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在zend框架中选择group by?

如何在zend框架中选择group by?
EN

Stack Overflow用户
提问于 2012-05-31 06:03:33
回答 2查看 1.3K关注 0票数 3

我在zend中有一个fetchAll函数:

代码语言:javascript
复制
public function fetchAll($where = 1, $order = null, $limit = null, $group = null, array $fields = null)
{
    $where = (null == $where) ? 1 : $where;


    $fields = (!isset($fields)) ? '*' : $fields;

    $select = $this->db->select()
                       ->from("table", $fields)
                       ->where($where)
                       ->order($order)
                       ->group($group)
                       ->limit($limit, $offset);
    echo $select; exit;
    $result = $this->db->fetchAll($select);
    return $this->getResultObjects($result);
}

我可以调用这个函数$this->fetchAll('field = 1', null, 10)

我可以使用$order to null,查询将正常工作,但由于某些原因,$group不能工作。

我如何才能使这个组是可选的,并且只有当我让它去做一些事情的时候才能加入?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-31 06:06:00

这些方法是链接在一起的,因此您可以将其拆分:

代码语言:javascript
复制
$select = $this->db->select()
  ->from("table", $fields)
  ->where($where);
  ->order($order)
  ->limit($limit, $offset);

if ($group) { 
  $select->group($group);
}

$result = $this->db->fetchAll($select);
return $this->getResultObjects($result);

链中的每个方法(fromwhereorder等)都返回一个Zend_Db_Select实例。因此,每次调用其中一个方法时,都可以立即调用同一个类中的另一个方法。

这些代码块是相同的:

代码语言:javascript
复制
// With chaining

$select = $this->db->select()
  ->from("table", $fields)
  ->where($where);
  ->order($order)
  ->limit($limit, $offset);

// No chaining

$select = $this->db->select();
$select = $select->from("table", $fields);
$select = $select->where($where);
$select = $select->order($order);
$select = $select->limit($limit, $offset);

您可以看出为什么首选使用链式。注意:在非链式示例中,赋值($select =)大部分是多余的,我将其保留下来只是为了显示它的笨拙。

票数 4
EN

Stack Overflow用户

发布于 2012-05-31 06:06:30

你可以这样做:

代码语言:javascript
复制
$select = $this->db->select()
                   ->from("table", $fields)
                   ->where($where)
                   ->order($order)
                   ->limit($limit, $offset);

if(!empty($group)){
    $select->group($group)
}

这是因为原理不会将你的查询执行到调用execute中。因此,在此之前,您可以继续构建查询。

多,我以为你的问题是关于教义的。但是,显然,它与ZendDb的工作方式类似。请参阅Mike B的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10824905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档