ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何在zend框架中通过可选组制作组?

2019-08-26 10:16:11  阅读:185  来源: 互联网

标签:zend-db php mysql zend-framework


我在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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有