2016-07-25 7 views
0

Ich versuche, mit einem Schlüsselwort aber nur in den Zeilen zu suchen, wo business_type Hersteller ist, aber es funktioniert nicht und es werden alle Zeilen abgerufen. Dies ist die Methode in meinem Modell:Wie zu verwenden, or_like und get_where zusammen in Codeigniter 3

public function search($keyword) { 
    $this->db->like('category',$keyword); 
    $this->db->or_like('keyword',$keyword); 
    $this->db->or_like('products_deals_with',$keyword); 
    $this->db->or_like('buisness_name',$keyword); 
    $params['conditions'] = array(
     'business_type' => 'manufacturer' 
    ); 
    $query = $this->db->get_where('business_listings', $params['conditions']); 
    return $query->result_array(); 
} 

generiert Abfrage ist:

SELECT * FROM `business_listings` 
WHERE `category` LIKE '%%' ESCAPE '!' 
OR `keyword` LIKE '%%' ESCAPE '!' 
OR `products_deals_with`LIKE '%%' ESCAPE '!' 
OR `buisness_name` LIKE '%%' ESCAPE '!' 
AND `business_type` = 'manufacturer' 
+0

Vielleicht verwenden 'nur $ this-> db-> where' und' $ this-> db-> get' wenn sie interagieren schlecht? Können Sie auch die generierte SQL-Abfrage bereitstellen? – CollinD

+0

SELECT * FROM 'business_listing' WHERE' Kategorie' LIKE '%%' ESCAPE '!' ODER 'keyword' LIKE '%%' ESCAPE '!' ODER 'products_deals_with' LIKE '%%' ESCAPE '!' ODER 'buisness_name' LIKE '%%' ESCAPE '!' UND 'business_type' = 'Hersteller' –

+0

Gehen Sie voran und aktualisieren Sie Ihre Frage mit diesen Informationen, anstatt als Kommentare zu posten. – CollinD

Antwort

3

ich die Lösung gefunden habe. Ich muss $ this-> db-> group_start() verwenden; und $ this-> db-> group_end();

public function search($keyword) { 

    $this->db->select('*'); 
    $this->db->where("business_type = 'manufacturer'"); 
    $this->db->group_start(); 
    $this->db->like('category',$keyword); 
    $this->db->or_like('keyword',$keyword); 
    $this->db->or_like('products_deals_with',$keyword); 
    $this->db->or_like('buisness_name',$keyword); 
    $this->db->group_end(); 
    $query = $this->db->get('business_listings'); 
    // echo $this->db->last_query(); 
    return $query->result_array(); 

} 

generiert Abfrage:

SELECT * FROM `business_listings` 
WHERE `business_type` = 'manufacturer' 
AND (
`category` LIKE '%%' ESCAPE '!' 
OR `keyword` LIKE '%%' ESCAPE '!' 
OR `products_deals_with` LIKE '%%' ESCAPE '!' 
OR `buisness_name` LIKE '%%' ESCAPE '!')