2014-02-19 2 views
4

У меня есть этот код в модели в CodeIgniter:Запуск несколько запросов в модели в CodeIgniter

<?php 
Class Mymodel Extends CI_Model 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function search($textinput) 
    { 
     $street = "select street from dataSearch;"; 
     $stripNameWOSpace = "select stripNameWOSpace FROM dataSearch;"; 
     $vowels = array('a','e','i','o','u',';','/','-', ' '); 
     $string = strtolower($textinput); 
     $strippedVowels = mysql_real_escape_string(str_replace($vowels, '', $string)); 
      $this->db->query("select dataSearch.id, 
       dataSearch.name, 
       dataSearch.street, 
       dataSearch.city, 
       dataSearch.lat, 
       dataSearch.lng, 
       category.asiatype from dataSearch join category on dataSearch.cat = category.id 
       where dataSearch.street like '%".$textinput."%'"); 
      $this->db->query("select dataSearch.id, 
       dataSearch.name, 
       dataSearch.street, 
       dataSearch.city, 
       dataSearch.lat, 
       dataSearch.lng, 
       category.asiatype from dataSearch join category on dataSearch.cat = category.id 
       where dataSearch.stripNameWOSpace like '%".$strippedVowels."%'"); 
      $query = $this->db->get(); 
      $query->result(); 

    } 
} 
?> 

Я просто хочу, чтобы выполнить несколько запросов. Вы заметили, что в заявлении два имеют разные условия. Я просто хочу получить результат для двух запросов. Я пытаюсь выполнить оператор switch для выполнения обоих запросов, и он не работает. Помоги мне.

+0

Какое ваше состояние для этого кода? – Vainglory07

+0

Как я могу добавить условие или оператор в этот код? Можете ли вы мне помочь? Я новичок в codeigniter. Мое условие было бы, если оба запроса верны, оба получат результат. – user987654321

ответ

4

Вы можете задать запрос переменной, чтобы делать ваши вещи с каждым запросом.

Как это:

Class Mymodel Extends CI_Model 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function search($textinput) { 
     $query1 = $this->db->query("YOUR QUERY"); 
     $query2 = $this->db->query("YOUR SECOND QUERY"); 

     $result1 = $query1->result(); 
     $result2 = $query2->result(); 

     return array_merge($result1, $result2); // If you want to merge both results 
    } 
} 

В контроллере:

$this->load->model('Mymodel'); 
$searchresult = $this->Mymodel->search($textinput); 

Для получения дополнительной информации, вы должны прочитать CodeIgniter User Guide - Model

+0

Но как я могу вызвать переменные в контроллере. – user987654321

+0

Я обновил свой ответ, проверьте его. И не забудьте взглянуть на ссылку. – TrungDQ

+0

Спасибо. Это работает! – user987654321

1

Я знаю ... старый, искал что-то другое, когда Я увидел нечто, что можно было бы сделать лучше. два оператора select идентичны, за исключением оператора where. вы можете использовать «ИЛИ» для объединения двух операторов WHERE. используйте «DISTINCT», чтобы избежать дублирования записей. «UNION» следует использовать, если вы действительно хотите дублировать записи.

Смежные вопросы