0

如图所示,我在模型下具有以下功能..

    public function get_products($category, $brand, $filter, $page, $limit) {
    // output
    $output = "";
    // offset
    $offset = $limit * ($page - 1);
    // query for pagination
    $this->db->select("*");
    $this->db->from("products");
    $this->db->where("category", $category);
    if ($brand != "all") {
        $this->db->where("brand", $brand);
    }
    // first time use
    $query = $this->db->get();
    $total_rows = $query->num_rows();
    $this->db->limit($limit, $offset);
    switch ($filter) {
        case 'latest':
        $this->db->order_by("released", "ASC");
        break;
        case 'most-viewed':
        $this->db->order_by("views", "ASC");
        break;
        case 'price-low-to-high':
        $this->db->order_by("price", "DESC");
        break;
        case 'price-high-to-low':
        $this->db->order_by("price", "ASC");
        break;
    }
    //second time use
    $query = $this->db->get();

在这里,我想使用select,fromwhere2this->db->get()如您所见,但查询在运行第一个get(). 那么有没有办法做到这一点?或者我必须写两次活动记录?

我尝试这样做的原因是为了获得num_rows分页total_rows配置的限制。

4

1 回答 1

1

这是你如何做到的。

public function get_products($category, $brand, $filter, $page, $limit) 
{
    $output = "";
    $offset = $limit * ($page - 1);

    $this->getQuery($category , $brand);
    $query = $this->db->get();

    $total_rows = $query->num_rows();
    //Call the query again 
    $this->getQuery($category , $brand);
    /*  This time limit and order will be applied to the query */   
    $this->db->limit($limit, $offset);

    switch ($filter) {
        case 'latest':
        $this->db->order_by("released", "ASC");
        break;
        case 'most-viewed':
        $this->db->order_by("views", "ASC");
        break;
        case 'price-low-to-high':
        $this->db->order_by("price", "DESC");
        break;
        case 'price-high-to-low':
        $this->db->order_by("price", "ASC");
        break;
    }
    //Run query now
    $query2 = $this->db->get();
}
/* This will only generate the query and will not run it */
function getQuery($category , $brand){

    $this->db->select("*");
    $this->db->from("products");
    $this->db->where("category", $category);
    if ($brand != "all") {
        $this->db->where("brand", $brand);
    }
}   
于 2013-04-05T09:33:42.070 回答