gpt4 book ai didi

php - 如何在 zend 框架中使 group by 可选?

转载 作者:可可西里 更新时间:2023-11-01 07:57:03 26 4
gpt4 key购买 nike

我在 zend 中有一个 fetchAll 函数:

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 不行。

我怎样才能让这个组是可选的,只有当我把它放在某处时才会进入?

谢谢

最佳答案

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

$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 的实例.因此,每次您调用其中一个方法时,您都可以立即调用来自同一类的另一个方法。

这些代码块是相同的:

// 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 =) 在非链式示例中大多是多余的,我只是将其保留以显示笨拙。

关于php - 如何在 zend 框架中使 group by 可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com