php – 如何在zend框架中通过可选组制作组?
作者:互联网
我在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为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);
链中的每个方法(from,where,order等)都返回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 =)在非链式示例中大部分是超级的,我只留下来显示笨重.
标签:zend-db,php,mysql,zend-framework 来源: https://codeday.me/bug/20190826/1728797.html