FIND_IN_SET автоматически добавляет IS NULL в запросе в codeigniter, а также необходимо добавить скобку в моем запросе для создания группы

0

Это, как я использую FIND_IN_SET в моем запросе, в котором он добавляет IS NULL Автоматически в запросе, а также необходимо добавить скобки после WHERE s. cat_id= '11' И запрос

$spilt=explode(',',$newstyle);

foreach ($spilt as $splitkey => $splitvalue) {
    if ($splitkey == 0) {
        $this->db->where("FIND_IN_SET(".$splitvalue.",w_card_style)");
    }
    else{
        $this->db->or_where("FIND_IN_SET(".$splitvalue.",w_card_style)");
    }
}

Когда я печатаю запрос с помощью $this->db->last_query(), он дает запрос как

SELECT 'c'.'city_name', 's'.'name', 's'.'location', 's'.'starting_price', 's'.'budget_range', 's'.'cat_id', 's'.'id', 'i'.'path', 's'.'specification_status', 's'.'per_unit_charge', 's'.'w_card_style', 's'.'w_card_style', 's'.'budget_range' FROM 'image_gallery' as 'i' JOIN 'specification' as 's' ON 'i'.'ser_id'='s'.'id' JOIN 'cities' as 'c' ON 'c'.'city_id'='s'.'location' JOIN 'wcard_style' as 'ws' ON 'ws'.'id'='s'.'w_card_style' WHERE 's'.'cat_id' = '11' AND FIND_IN_SET(1,w_card_style) IS NULL OR FIND_IN_SET(2,w_card_style) IS NULL OR FIND_IN_SET(3,w_card_style) IS NULL AND budget_range BETWEEN 50 AND 100 GROUP BY 'ser_id' HAVING 'cat_id' = '11' ORDER BY 's'.'budget_range' DESC

После каждого FIND_IN_SET существует IS NULL, поэтому, как удалить IS NULL из запроса, а также нужно добавить скобки после "WHERE s. cat_id= '11' AND" во время выполнения, как это

SELECT 'c'.'city_name', 's'.'name', 's'.'location', 's'.'starting_price', 's'.'budget_range', 's'.'cat_id', 's'.'id', 'i'.'path', 's'.'specification_status', 's'.'per_unit_charge', 's'.'w_card_style', 's'.'w_card_style', 's'.'budget_range' FROM 'image_gallery' as 'i' JOIN 'specification' as 's' ON 'i'.'ser_id'='s'.'id' JOIN 'cities' as 'c' ON 'c'.'city_id'='s'.'location' JOIN 'wcard_style' as 'ws' ON 'ws'.'id'='s'.'w_card_style' WHERE 's'.'cat_id' = '11' AND (FIND_IN_SET(1,w_card_style) IS NULL OR FIND_IN_SET(2,w_card_style) IS NULL OR FIND_IN_SET(3,w_card_style) IS NULL ) AND budget_range BETWEEN 50 AND 100 GROUP BY 'ser_id' HAVING 'cat_id' = '11' ORDER BY 's'.'budget_range' DESC'enter code here'
Теги:
codeigniter
filter

1 ответ

3
Лучший ответ

Попробуйте этот код, я изменил код с помощью некоторых chnages.Use мой код ниже он работает.

$spilt=explode(',',$newstyle);
          foreach ($spilt as $splitkey => $splitvalue) {
            if ($splitkey == 0) {
            $this->db->where("FIND_IN_SET(".$splitvalue.",w_card_style)!=",0);
            }
            else{
              $this->db->or_where("FIND_IN_SET(".$splitvalue.",w_card_style)!=",0);
            }
          }
  • 1
    Большое спасибо @tarangpatel, это работает для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню