为了账号安全,请及时绑定邮箱和手机立即绑定

使用codeigniter的多个过滤器,我只需要批准的产品?

使用codeigniter的多个过滤器,我只需要批准的产品?

PHP
慕标5832272 2022-06-17 14:24:12
我正在使用 codeigniter 进行多次搜索,但所有产品都从数据库中显示。我只需要批准的产品。当我尝试在产品视图页面中显示时,所有产品都从产品表中显示。控制器:public function product()    {       $searchText="";       if($this->input->post('searchText'))        {          $searchText = $this->input->post('searchText');        }        $like = array(            'ProductName'=>$searchText        );        $orlike = array(            'CategoryName'=>$searchText,            'SubCategoryName'=>$searchText,            'BrandName'=>$searchText        );        $where = array{             'ProductIsActive'=>1,             'ProductStatus'=>'Approved'        );        $jointables = array(            'categories'=>'CategorySlug=ProductCategory',            'subcategories'=>'SubCategorySlug=ProductSubCategory',            'brands'=>'BrandSlug=ProductBrand'         );         $data['product']= $this-> Custom_model-> getproduct('products',$jointables,$where,$like,$orlike,array());     }模型:  function getproduct($primarytable,$jointables,$where,$like,$orlike)    {        $this->db->select('*');        $this->db->from($primarytable);        $this->db->where($where);        $this->db->like($like);        foreach($orlike as $key=>$value)        {            if($value!="")            {                $this->db->or_like($key,$value,'both');            }                   }        foreach($jointables as $key=>$value)        {            $this->db->join($key,$value,'left');        }                $query = $this->db->get();        if($query->num_rows() > 0)        {                $row = $query->result();                return $row;        }else{                return FALSE;        }    }
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

事情在您的配置中 - 如果您有需要的字段,则必须对查询进行分组


以下应该做的工作


你的控制器


public function product()

{

    $searchText="";

    if($this->input->post('searchText'))

    {

        $searchText = $this->input->post('searchText');

    }


    $arrFilter = [

        'like' =>   [

            'ProductName' => $searchText

        ],

        'orlike' => [

            'CategoryName' => $searchText,

            'SubCategoryName' => $searchText,

            'BrandName' => $searchText

        ],

    ];


    $jointables = [

        'categories'=>'CategorySlug=ProductCategory',

        'subcategories'=>'SubCategorySlug=ProductSubCategory',

        'brands'=>'BrandSlug=ProductBrand'

    ];



    $where = [

        'ProductIsActive'=>1,

        'ProductStatus'=>'Approved'

    ];


    $data['product']= $this->Custom_model-> getproduct('products',$jointables,$where,$arrFilter); 

}

你的模型


function getproduct($primarytable, $jointables, $where, $arrFilter = [])

{

    $this->db->select('*');

    $this->db->from($primarytable);

    $this->db->where($where);


    if (is_array($arrFilter) && count($arrFilter) > 0)

    {

        $this->db->group_start();


        if (isset($arrFilter['like']))

        {

            $this->db->like($arrFilter['like']));

        }


        if (isset($arrFilter['orlike']))

        {

            $this->db->group_start();

            foreach($arrFilter['orlike'] as $key=>$value)

            {

                if($value!="")

                {

                    $this->db->or_like($key,$value,'both');

                }           

            }

            $this->db->group_end();

        }


        $this->db->group_end();

    }


    foreach($jointables as $key=>$value)

    {

        $this->db->join($key,$value,'left');

    }       


    $query = $this->db->get();

    if($query->num_rows() > 0)

    {

        $row = $query->result();

        return $row;

    }

    else

    {

        return FALSE;

    }

}


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信