Spec-Zone.ru › CodeIgniter 3

Модели

Модели необязательно доступны для тех, кто хочет использовать более традиционный подход MVC.

Содержание страницы

  • Модели
    • Что такое модель?
    • Структура модели
    • Загрузка модели
    • Автозагрузка моделей
    • Подключение к базе данных

Что такое модель?

Модели — это PHP-классы, предназначенные для работы с информацией в вашей базе данных. Например, предположим, что вы используете CodeIgniter для управления блогом. У вас может быть класс модели, содержащий функции для вставки, обновления и получения данных вашего блога. Вот пример того, как может выглядеть такой класс модели:

class Blog_model extends CI_Model {

        public $title;
        public $content;
        public $date;

        public function get_last_ten_entries()
        {
                $query = $this->db->get('entries', 10);
                return $query->result();
        }

        public function insert_entry()
        {
                $this->title    = $_POST['title']; // please read the below note
                $this->content  = $_POST['content'];
                $this->date     = time();

                $this->db->insert('entries', $this);
        }

        public function update_entry()
        {
                $this->title    = $_POST['title'];
                $this->content  = $_POST['content'];
                $this->date     = time();

                $this->db->update('entries', $this, array('id' => $_POST['id']));
        }

}

Примечание

Методы в приведенном выше примере используют методы базы данных Query Builder.

Примечание

Для простоты в этом примере мы используем $_POST напрямую. Это, как правило, плохая практика, и более распространённый подход заключается в использовании библиотеки Input Library $this->input->post('title').

Структура модели

Классы моделей хранятся в каталоге application/models/. Они могут быть вложены в подкаталоги, если вы хотите организовать их таким образом.

Базовый прототип класса модели выглядит так:

class Model_name extends CI_Model {

}

Где Model_name — это имя вашего класса. Имена классов должны начинаться с заглавной буквы, а остальные буквы — строчные. Убедитесь, что ваш класс наследуется от базового класса Model.

Имя файла должно совпадать с именем класса. Например, если у вас есть такой класс:

class User_model extends CI_Model {

}

Ваш файл будет таким:

application/models/User_model.php

Загрузка модели

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

$this->load->model('model_name');

Если ваша модель находится в подкаталоге, укажите относительный путь от каталога моделей. Например, если у вас есть модель, расположенная в application/models/blog/Queries.php, вы загрузите её, используя:

$this->load->model('blog/queries');

После загрузки вы будете обращаться к методам вашей модели, используя объект с тем же именем, что и ваш класс:

$this->load->model('model_name');

$this->model_name->method();

Если вы хотите назначить вашей модели другое имя объекта, вы можете указать его во втором параметре метода загрузки:

$this->load->model('model_name', 'foobar');

$this->foobar->method();

Вот пример контроллера, который загружает модель, а затем отображает представление:

class Blog_controller extends CI_Controller {

        public function blog()
        {
                $this->load->model('blog');

                $data['query'] = $this->blog->get_last_ten_entries();

                $this->load->view('blog', $data);
        }
}

Автозагрузка моделей

Если вам нужно, чтобы определённая модель использовалась во всём приложении, вы можете указать CodeIgniter на её автозагрузку во время инициализации системы. Для этого откройте файл application/config/autoload.php и добавьте модель в массив autoload.

Подключение к базе данных

При загрузке модели не происходит автоматического подключения к базе данных. Для подключения доступны следующие варианты:

  • Вы можете подключиться, используя стандартные методы базы данных описанные здесь, либо из класса контроллера, либо из класса модели.
  • Вы можете указать методу загрузки модели автоматическое подключение, передав TRUE (булево значение) в качестве третьего параметра. Будут использоваться настройки подключения, определённые в файле конфигурации базы данных:

    $this->load->model('model_name', '', TRUE);
    
  • Вы можете вручную передать настройки подключения к базе данных в качестве третьего параметра:

    $config['hostname'] = 'localhost';
    $config['username'] = 'myusername';
    $config['password'] = 'mypassword';
    $config['database'] = 'mydatabase';
    $config['dbdriver'] = 'mysqli';
    $config['dbprefix'] = '';
    $config['pconnect'] = FALSE;
    $config['db_debug'] = TRUE;
    
    $this->load->model('model_name', '', $config);
    

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/models.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API