doupike2351 2019-08-09 07:17
浏览 262

Codeigniter:添加order_by查询时排序不起作用

I have sort by function in website from that i'm sorting products,but i want to display recently added products first, when i try to add order_by in query it is overriding the sort by function.

in the following code: $sort_filters where i'm sorting products by price high to low,low to high, popularity, and newest first.

Please Help!!

Modal Code:

 function get_deals_for_homepage2($filters = [], $sort_filters = [], $limit = 0, $offset = 0, $sort_filters_mobile = []) {

$this->db->select('deals.*,deals.expiry_date_time,categories.category_name,categories.seo_url as category_seo_url,sub_categories.sub_category_name,sub_categories.seo_url as sub_category_seo_url,stores.store_name,stores.is_direct_link');
$this->db->from('deals');
$this->db->join('categories', 'categories.id=deals.categories_id');
$this->db->join('sub_categories', 'sub_categories.id=deals.sub_categories_id');
$this->db->join('stores', 'stores.id=deals.stores_id');
$this->db->order_by("deals.created_date_time", "desc");
$this->db->where("deals.status", 1);
$this->db->where("stores.current_status", 'Active');
foreach ($filters as $key => $value) {
    if (is_array($value)) {
    if ($key == 'deals.tags') {
        $cond = array();
        foreach ($value as $key => $val) {
        $cond[] = 'FIND_IN_SET("' . $val . '",deals.tags) != 0';
        }
        $this->db->where('(' . implode(' OR ', $cond) . ')');
    } else {
        $key_array = explode(' ', $key);
        if (isset($key_array[1]) && ($key_array[1] == "!=")) {
        $this->db->where_not_in($key_array[0], $value);
        } else {
        $this->db->where_in($key, $value);
        }
    }
    } elseif ($key == 'deals.deal_title') {
    $this->db->like($key, $value);
    $this->db->or_like('deals.description', $value);
    $this->db->or_like('deals.meta_keywords', $value);
    $this->db->or_like('deals.meta_description', $value);
    $this->db->or_like('deals.meta_title', $value);
    $this->db->or_like('stores.store_name', $value);
    $this->db->or_like('categories.category_name', $value);
    $this->db->or_like('categories.seo_url', $value);
    $this->db->or_like('sub_categories.sub_category_name', $value);
    $this->db->or_like('deals.short_description', $value);
    $this->db->or_like('deals.deal_type', $value);
    } elseif ($key == 'deals.tags') {
    $this->db->where('FIND_IN_SET("' . $value . '",deals.tags) !=', 0);
    } else {
    $this->db->where($key, $value);
    }
}
foreach ($sort_filters as $key => $value) {
   $this->db->order_by("deals.deal_type", "DEAL");
   $this->db->order_by($key, $value);
   $this->db->order_by("deals.created_date_time", "desc");
}
if ($limit != 0) {
    if ($offset != 0) {
    $this->db->limit($limit, $offset);
    } else {
    $this->db->limit($limit);
    }
}
$data = $this->db->get()->result();
if ($data) {
    foreach ($data as $item) {
    if ($item->current_status == 'Active') {
        $item->current_status_bootstrap_class = 'primary';
    } else {
        $item->current_status_bootstrap_class = 'danger';
    }
    if ($item->deal_type == 'DEAL') {
        $item->deal_type_bootstrap_class = 'primary';
        $item->deal_type_text = 'Deal';
    } else {
       $item->deal_type_bootstrap_class = 'success';
        $item->deal_type_text = 'Offer & Coupon';
    }
    $item->image = FILE_UPLOADED_PATH . $item->image;
    }
    return $data;
}
return [];
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 MCNP里如何定义多个源?
    • ¥20 双层网络上信息-疾病传播
    • ¥50 paddlepaddle pinn
    • ¥20 idea运行测试代码报错问题
    • ¥15 网络监控:网络故障告警通知
    • ¥15 django项目运行报编码错误
    • ¥15 请问这个是什么意思?
    • ¥15 STM32驱动继电器
    • ¥15 Windows server update services
    • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏