2010-01-15 2 views
4

У меня есть запрос, который работает в контроллере:Как запросить базу данных с точки зрения - CodeIgniter

$data['query'] = $this->Member->select_sql($id);  
$this->load->view('myform'); 

, а затем выводит данные в окне:

foreach ($query->result() as $row): 
    echo $row->post_title; 
    echo $row->post_user_id; 
endforeach; 

Так что это выводит мне список сообщения, сделанные пользователем. Теперь я хотел бы запустить еще один запрос, который будет для каждого цикла записей через мою пользовательскую таблицу и выводить информацию пользователя рядом с каждым сообщением. (Я не хочу выбирать данные из представления или объединять эти 2 таблицы в это время в MySQL)

Любые идеи?

+1

Я не уверен, что это такая хорошая идея - весь смысл MVC заключается в обеспечении четкой структуры кода. У вас не должно быть бизнес-логики во взглядах. – Veeti

+0

это только для целей тестирования, относящихся к производительности. в любом случае, спасибо. – Adnan

+1

@Veeti Нет ничего плохого в том, чтобы вызвать модель из представления. См. Http://stackoverflow.com/questions/1973221/can-i-call-a-model-from-a-view – Gordon

ответ

5

Внесите адаптер базы данных или соответствующий объект таблицы в представление.

Из кода выше, я бы предположить, что это было бы

$data['userModel'] = $this->User; 

Затем используйте его оттуда, чтобы запустить свой запрос, например

$user = $userModel->select_sql($row->post_user_id); 
+0

благодарите своего дорогого друга. – Adnan

+0

Спасибо @Gordon :) –

6

Хотя это не является хорошей практикой «чистый» подход будет выглядеть следующим образом:

  • Grab экземпляр CI в представлении
  • Загрузите модель, содержащую нужный запрос извлечения данных функции
  • Запуск функции из модели в представлении

Так, по мнению:

$CI =& get_instance(); 
$CI->load->model('modelname'); 
$result = $CI->modelname->functionname(); 
var_dump($result); 

Протестировано и работает.

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