how to make group by optional in zend framework?

mysql, php, zend-db, zend-framework

Solution

The methods are chained so you can split it up:

$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);

Every method in the chain (`from`, `where`, `order`, etc) returns an instance of `Zend_Db_Select`. So every time you call one of those methods you can immediately follow it up with another method call from that same class.

These code blocks are identical:

// 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);

You can see why chaining is preferred. Note: the assignment (`$select =`) is mostly superflous in the non-chain example, I only left it in to show the clunkyness.

Problem

i have a `fetchAll` function in zend: ``` 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); } ``` and i can call this function `$this->fetchAll('field = 1', null, 10)`; i can `$order to null` and the query will work just fine but not the `$group` for some reason. How can i make it so that the group is optional and goes in only if i sat it to something? thanks

Original source