2015-03-06 4 views
1

У меня есть небольшой вопрос пожалуйста: Скажем, у меня есть длинный запрос:Codeigniter: Извлечение частичных данных из запроса

$this->db->select('*') 
    ->from('x') 
    ->join(...) 
    ->where('y >',$id) 
    ->where('z <',$nr) 
    ->where(...) 
    ... 

Как я могу поместить в другой переменное все, где заявление, так что я могу использовать их индивидуально, но только с использованием одного запроса? Спасибо.

+0

вы можете хранить где условия в массиве, и передать этот массив для запроса. – Shridhar

+0

$ array = array ('name' => $ name, 'title' => $ title, 'status' => $ status); $ this-> db-> где ($ array); // Производит: WHERE name = 'Joe' AND title = 'boss' AND status = 'active' – Shridhar

+0

Не то, что я хотел. Я хочу целое, где условие хранится в переменной. Например, я хочу использовать в своем контроллере то, что создает первое условие. Надеюсь, я объяснил это ясно. Например, я хочу, чтобы в переменной сохранялся результат первого, где в другой переменной для хранения результата второго, где ... и т. Д. – Napster33

ответ

1

Вам необходимо создать различные методы модели. Каждый метод должен иметь результаты вывода запросов. В контроллере вы вызываете каждый из этих методов и сохраняете результаты в переменных. Почему бы не сделать это:

Контроллер:

function controller_method(){ 
    $res1 = $this->model_name->get_where_results1($id, $nr); 
    $res2 = $this->model_name->get_where_results2($id, $nr); 
    $res3 = $this->model_name->get_where_results3($id, $nr); 
} 

Модель:

function get_where_results1($id, $nr) { 
    $this->db->select('*') 
      ->from('x') 
      ->join("") 
      ->where(""); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
function get_where_results2($id, $nr) { 
    $this->db->select('*') 
      ->from('x') 
      ->join("") 
      ->where(""); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
function get_where_results3($id, $nr) { 
    $this->db->select('*') 
      ->from('x') 
      ->join("") 
      ->where(""); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

UPDATE - если вы хотите использовать фильтры, я бы так:

контроллер :

function controller_method() { 
    $res1 = $this->model_name->model_method($filters); 
} 

Модель:

function model_method($filters) { 
    $this->db->select('*'); 
    $this->db->from('x'); 
    $this->db->join(""); 
    if ($filters['filt1']) { 
     $this->db->where("something", $filters['filt1']); 
    } 
    if ($filters['filt2']) { 
     $this->db->where("something", $filters['filt2']); 
    } 

    $query = $this->db->get(); 
    return $query->result(); 
} 
+0

Я знаю, что это можно сделать так, но я хочу создать несколько фильтров, применяемых к основному запросу, когда я присоединяюсь к нескольким таблицам – Napster33

+0

, если это так, что вам нужно будет предоставить условные условия в вашем основном запросе. я обновлю свой ответ – CodeGodie

+1

TY sir, который сделал это;) – Napster33