2013-09-20 3 views
3

Я новичок в ООП и CodeIgniter. Когда я отделяю методы модели, я называл ее в контроллере. Но теперь я нахожу другой способ назвать это в модели. Хорошо ли это или не использовать путь ниже:Вызовите несколько методов в модели или вызовите контроллер, CodeIgniter?

Модель:

function q_insert($id) { 
    //get value from q_select model 
    $s = $this->q_select($id); 
    $data = array(
      'User' => $s->row()->Name; 
     } 
    $this->db->insert('tblPOS', $data); 
} 

function qu_select($id) { 
$this->db->select('Name, ID'); 
$this->db->from('tblUser'); 
$this->db->where('ID', $id); 
} 

Контроллер:

function create_pos($id) { 
    $this->model->q_insert($id); 
} 
+2

Его штраф для вызова функции модели в рамках этой модели, это зависит от требований ... –

+0

я написал «Новый» это означает, что я не очень хорошо достаточно. Извините – lyhong

+0

@teresko: Это не одна из худших фреймворков! –

ответ

1

Если вам управлять запросов контроллера от самой вашей модели, ее абсолютно нормально.

Скажите, например, если вы сохраняете запись.

Если представленные данные формы имеют (скрытое) значение id, то вы обновляете запись, иначе вы добавляете новую запись.

Если вы вызываете функцию от контроллера после отправки формы со всеми представленными данными, вы можете проверить в самой Модели, добавляете ли вы или обновляете данные.

В зависимости от этого вы можете вызвать функцию вставки или обновления.

Ваш подход/концепция абсолютно прекрасна и приветствуется.

2

Ваше использование прекрасное. Это будет плохой практикой в ​​таких случаях, как если вы задаете значения объекту $ this-> db и вызываете другой метод, который имеет другой набор значений для класса DB. Это может получить вас в проблемы

плохая практика

function get_users(){ 
$this->db->select('name'); 
$this->db->where('a', $a); 
$children = $this->_get_children(); 
$this->db->where_not_in($children); 
$this->db->get('parents'); 
} 
Смежные вопросы