【问题标题】:Codeigniter: Can I return multiple values from the same function?Codeigniter:我可以从同一个函数返回多个值吗?
【发布时间】:2011-08-15 19:46:35
【问题描述】:

我想根据行数返回查询结果,而无需运行多个查询。这在 Codeigniter 中可行吗?以下方法用于返回查询结果,但是否也可以计算找到的条目数?

控制器:

$data['records'] = $this->item_model->searchItem($item_name);

型号:

$query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%'));
return $query->result();

【问题讨论】:

    标签: codeigniter


    【解决方案1】:
    $bindings = array($this->user_id, '%'.$item_name.'%');
    
    $records = $this->db->query($sql, $bindings)->result();
    
    return array(
        'records' => $records,
        'count' => count($records),
    );
    

    然后,在您的控制器中:

    $query = $this->item_model->searchItem($item_name);
    
    $data['records'] = $query['records'];
    $data['count'] = $query['count'];
    

    【讨论】:

    • $query 没有$query->result() 的计数,您可能希望将$query->result() 作为记录发回...
    • @jondavidjohn $query 已经持有result。查看第一行的结尾。也许我应该将该变量重命名为$records
    • 如何通过控制器“检索”这个?
    【解决方案2】:

    选项一

    $query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%'));
    $data['result'] =  $query->result();
    $data['rows']   = $query->num_rows();
    return $data;
    

    选项二

    // model
    $query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%'));
    return $query;
    // controller
    $data['query'] = $this->item_model->searchItem($item_name);
    // then you have $data['query']->result();
    // and $data['query']->num_rows();
    

    【讨论】:

      【解决方案3】:

      您可以根据需要从函数发送任意数量的变量。但是请记住,函数应该执行一个 UNIT 工作。因此,不得违反此规则。 我们可以使用控制结构

      if this {return A;} elseif () {return B;} else {return C;}

      我们也可以在数组中发送(捆绑)变量并发送

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 2021-04-16
        • 1970-01-01
        相关资源
        最近更新 更多