Каков наилучший способ написать код модели в Codeigniter

Я очень смущен в отношении того, какой метод использовать для кодирования модели в кодеигниторе.

Я много искал и нашел различные методы, используемые различными кодами. Просьба указать мне лучший способ написать Model Class с помощью codeigniter.

Немного примеров;

  • Некоторые принимают длинные параметры в сигнатуре метода

    function insert_data($name, $address, $email, $....,$...,$..) 

    В то время как другие просто используют следующее и пишут все почтовые коды внутри модели.

     function insert() { $name= $this->input->post('var1'); $name= $this->input->post('var1'); $name= $this->input->post('var1'); } 
  • Некоторые создают разные модели для каждой таблицы, в то время как некоторые пишут очень мало моделей.

    И еще много противоречий между разными разработчиками, я так сильно запутался, что технику можно использовать для написания более эффективного и отраслевого стандартного кода.

    Пожалуйста, помогите мне. Спасибо большое.

Solutions Collecting From Web of "Каков наилучший способ написать код модели в Codeigniter"

Это хороший вопрос. Он восходит к плюсам и минусам Codeigniter. Будучи тем, что вы можете настроить Codeitgniter столько, сколько пожелаете (что многие люди переусердствовали), такие проблемы возникают, когда разработчик может решить, где они находятся. С учетом сказанного я расскажу, как я использую модели.

В соответствии со стандартами MVC Codeigniter:

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

Поэтому модель должна обрабатывать только связь с вашей базой данных или если вы не используете базы данных, она должна обрабатывать извлечение данных из других источников (например, json, текстовые файлы и т. Д.).

Что я рекомендую:

  • Храните все свои внутренние функции в своем методе контроллера, это включает в себя все ваши данные this $this->input->post() . После того, как у вас есть все ваши данные post() , создайте необходимый массив и передайте его в модель
  • Модель должна получить массив (который вы создали в контроллере) и создать запросы к базе данных, необходимые для извлечения информации.

С помощью этой структуры вы можете повторно использовать эти методы модели с любых контроллеров, сохраняя модульную структуру.

Надеюсь это поможет.

это может помочь вам. (как я использую модель в codeigniter)

МОЙ МОДЕЛЬ PHP FILE:

 <?php class Dbmodel extends CI_Model { function __construct() { parent::__construct(); $this->db->query("SET time_zone='+05:30'"); } function customQueryInsert($table, $array_data, $array_condition) { if (!empty($array_condition)) { $this->db->where($array_condition); } $result = $this->db->insert($table, $array_data); if ($result) { return TRUE; } else { return FALSE; } } function customQueryInsertGetId($table, $array_data, $array_condition) { if (!empty($array_condition)) { $this->db->where($array_condition); } $result = $this->db->insert($table, $array_data); if ($result) { return $this->db->insert_id(); } else { return FALSE; } } function lastQuery() { return $this->db->last_query(); } } 

И ВЫЗОВ В КОНТРОЛЛЕРАХ:

 $this->load->model('Dbmodel', 'Dbmodel', TRUE); $this->notification = $this->Dbmodel->customQuerySingleResult("select count(id) as ncount from notification where id='$this->id' and status='unread'", "ncount"); $this->Dbmodel->customQueryInsert("activity", array('userid' => $this->id, 'username' => $this->email, 'activity' => uri_string()), array()); 

так я использую MODEL в CODEIGNITER .. в вашем случае вы можете использовать ниже код для вставки ваших данных, предполагая, что вы пишете его внутри метода контроллера.

 $this->load->model('Dbmodel', 'Dbmodel', TRUE); $status = $this->Dbmodel->customQueryInsert("table_name",array('column_name'=>'var1','column_two'=>'var2')); if($status){ //do succes stuffs }else{ //fail redirect... } 

теперь вам не нужно создавать методы с требуемыми параметрами .. просто вызовите метод customQueryInsert и передайте имя таблицы как первый параметр и массив column_name=>column_data второму параметру …

вы можете оптимизировать его в соответствии с вашими потребностями .. или если вы хотите получить дополнительную помощь, пожалуйста, дайте мне знать ..

Если вы перейдете на http://www.codeigniter.com/ внизу, вы увидите

CodeIgniter поощряет MVC, но не заставляет его на вас.

  1. Это означает, что вы можете написать свой код, как хотите.

Из вашего примера

function insert_data($name, $address, $email, $....,$...,$..) лучше, чем function insert() . Первый можно использовать повторно.

Предположим, вы хотите выполнить одну и ту же задачу с помощью метода get. В этом случае вам нужно написать другую функцию insert для get.but, 1-й можно повторно использовать, если вы передадите их с вашего контроллера.

  1. $this->input->post лучше использовать эту функцию в контроллере. Если вы используете ее в функции модели, это означает, что функция будет работать только там, где должны быть данные post.