优化将参数从控制器传递到模型以进行mysql查询的方式

沙赫扎德·汗(M Shahzad Khan)

我正在condeigniter(newbie)中从事一个项目。我的项目包括使用类别,子类别,关键字,最低-最高价格等不同过滤器列出产品。我已经在自定义php中完成了这100次,在此我$wherewhere子句中的所有条件制作了变量例如

$where = '';
if($category != '')
{
  $where .= " category = '$category'";
}

现在在codeigniter中,我有多个参数,我可以controller通过它们uri segment并调用model函数,并run mysql query在其中传递所有参数问题是我正在检查每个参数是否为空或已设置,并相应地运行多个查询。例如。

if($category != '' && $subCategory != '')
{
  //whole query here
}
else  if($category == '' && $subCategory != '')
{
  //whole query here
}

//and so on

我需要的是执行此操作的任何优化方法,因为有联接(多个参数)。

我的样本条件和查询

if($subCat == '' && $vendor == '')
    {
        $cat = str_replace("-"," ",str_replace("-and-"," & ",$cat));
        $this->db->select('listings.* ');
        $this->db->from('listings');
        $this->db->join('categories','categories.id = listings.category');
        $this->db->where('categories.name',$cat);
        $this->db->limit($perpage,$page);
        $query = $this->db->get();
        return $query->result();
    }
    else if($subCat == '' && $vendor != '')
    {
        $cat = str_replace("-"," ",str_replace("-and-"," & ",$cat));
        $this->db->select('listings.* ');
        $this->db->from('listings');
        $this->db->join('categories','categories.id = listings.category');
        $this->db->join('vendors','vendors.id = listings.programme');
        $this->db->where('categories.name',$cat);
        $this->db->where('vendors.name',$vendor);
        $this->db->limit($perpage,$page);
        $query = $this->db->get();
        return $query->result();
    }
    else if($subCat != '' && $vendor == '')
    {
        $cat = str_replace("-"," ",str_replace("-and-"," & ",$cat));
        $this->db->select('listings.* ');
        $this->db->from('listings');
        $this->db->join('categories','categories.id = listings.category');
        $this->db->join('subcategories','subcategories.id = listings.subcategory');
        $this->db->where('categories.name',$cat);
        $this->db->where('subcategories.name',$subCat);
        $this->db->limit($perpage,$page);
        $query = $this->db->get();
        return $query->result();
    }
    else
    {
        $cat = str_replace("-"," ",str_replace("-and-"," & ",$cat));
        $subCat = str_replace("-"," ",str_replace("-and-"," & ",$subCat));
        $vendor = str_replace("-"," ",str_replace("-and-"," & ",$vendor));

        $this->db->select('listings.* ');
        $this->db->from('listings');
        $this->db->join('categories','categories.id = listings.category');
        $this->db->join('subcategories','subcategories.id = listings.subcategory');
        $this->db->join('vendors','vendors.id = listings.programme');
        $this->db->where('categories.name',$cat);
        $this->db->where('subcategories.name',$subCat);
        $this->db->where('vendors.name',$vendor);
        $this->db->limit($perpage,$page);
        $query = $this->db->get();  
        return $query->result();
    }
尼尔兹

您只需要一次而不是每次都编写查询。例如,您可能已经描述了几种情况。例如,这是我所做的事情:

$this->db->select('resource.id,city.name as city_name,city.provinceID,resource.Rate, skills.name')->from('resource')
->join('city','resource.cityID = city.id')
->join('resourceToSkillsMap','resource.id = resourceToSkillsMap.resourceID')
->join('skills','skills.id =  resourceToSkillsMap.skillsID');

if($category != '' && $subCategory != '') #condition
{
    $this->db->where('condition');
}
else  if($category == '' && $subCategory != '') #condition
{
    $this->db->where('condition');
}

$rs = $this->db->group_by('resource.id')
->limit($limit,$offset)
->get();

查看查询的编写方式,only once但在where condition中提供if else因此,您的查询将以这种方式建立。执行查询后,只是echo $this->db->last_query();回显查询并根据需要对其进行调整。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel将参数从控制器传递到模型

来自分类Dev

Laravel将参数从控制器传递到模型

来自分类Dev

查询响应值从模型传递到控制器?

来自分类Dev

Codeigniter如何知道如何将参数从控制器传递到模型

来自分类Dev

将数据从服务以角度方式传递到控制器

来自分类Dev

试图将模型数据从视图传递到控制器

来自分类Dev

将模型从视图传递到控制器

来自分类Dev

将模型从局部视图传递到控制器

来自分类Dev

将数组从模型传递到控制器

来自分类Dev

将模型从视图传递到控制器

来自分类Dev

Codeigniter将数据从模型传递到控制器

来自分类Dev

MVC-将模型从控制器传递到类

来自分类Dev

Codeigniter将数组从模型传递到控制器

来自分类Dev

将值从模型传递到Codeigniter中的控制器

来自分类Dev

将数组从模型传递到控制器

来自分类Dev

将数据从视图传递到控制器 - 使用模型

来自分类Dev

Angular:将JSON参数传递到控制器进行过滤

来自分类Dev

将数组从查询传递到控制器,codeigniter

来自分类Dev

将参数从link_to传递到控制器方法

来自分类Dev

将参数从指令传递到控制器功能

来自分类Dev

将参数从控制器传递到Angular中的服务

来自分类Dev

将参数从控制器传递到angularjs中的服务

来自分类Dev

AngularJS-将参数传递到控制器吗?

来自分类Dev

角度:将参数从控制器传递到工厂

来自分类Dev

将参数传递给控制器

来自分类Dev

将控制器的外键传递给特定查询的模型cakephp 2.3.9

来自分类Dev

将参数从带有自己的控制器的弹出式场景传递到主控制器 JavaFX

来自分类Dev

Simple_form将参数传递给控制器-无模型

来自分类Dev

如何将参数从控制器索引函数传递给模型的函数?拉拉维尔

Related 相关文章

热门标签

归档