Модель играет важную роль в веб-каркасе FuelPHP. Он представляет бизнес-объекты приложения. Они либо предоставляются клиентами, либо извлекаются из внутренней базы данных, обрабатываются в соответствии с бизнес-правилами и сохраняются обратно в базу данных. Давайте узнаем о моделях и как они взаимодействуют с серверной системой в этой главе.
Создание модели
В FuelPHP модель — это просто простой класс PHP, расширяющий встроенный класс Model. По умолчанию к моделям может быть добавлен префикс Model_, аналогичный контроллерам, и их следует поместить в папку fuel / app / classes / model / . Давайте создадим базовую модель сотрудника и расширим ее по мере продвижения.
топливо / приложение / классы / модель / employee.php
<?php namespace Model; class Model_Employee extends \Model { public static function fetchAll() { // Code to fetch employee from database } }
Доступ к модели
После определения модели ее можно свободно использовать в любом контроллере, просто включив ее в контроллер следующим образом.
use \Model\Employee; class Controller_Employee extends Controller { public function action_index() { $employees = Employee::fetchAll(); } }
Обзор базы данных
FuelPHP предоставляет собственный уровень абстракции базы данных для извлечения данных из базы данных. Он предоставляет как базовый, так и расширенный инструмент на основе ORM. Базовый набор инструментов состоит из классов, основанных на DB, DBUtil и Query_Builer. Расширенный инструментарий Orm. Набор инструментов Orm является производным от базового набора инструментов и упакован в отдельный пакет.
Конфигурация базы данных
FuelPHP отделяет настройки базы данных от основного файла конфигурации, и это файл fuel / app / config / db.php . Он поддерживает отдельные настройки для каждой среды. В настоящее время FuelPHP поддерживает драйверы MySQL, MySQLi и PDO. Пример настройки следующий:
<?php return array ( 'development' => array ( 'type' => 'mysqli', 'connection' => array ( 'hostname' => 'localhost', 'port' => '3306', 'database' => 'tutorialspoint_fueldb', 'username' => 'root', 'password' => 'password', 'persistent' => false, 'compress' => false, ), 'identifier' => '`', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => false, 'readonly' => false, ), )
DB-Toolkit
Класс DB — это самый простой вариант для доступа к базе данных из приложения. Он предоставляет опции для построения запроса к базе данных, выполнения его для целевой базы данных и, наконец, получения результата. Класс DB взаимодействует со следующими классами и предоставляет всеобъемлющий API базы данных.
-
Database_Connection — Singleton и основной класс для взаимодействия с базой данных
-
Database_Query — базовый, конкретный класс для выполнения запроса SQL и получения результата
-
Database_Query_Builder — базовый абстрактный класс для построения SQL-запроса
-
Database_Query_Builder_Join — класс для создания объединений SQL
-
Database_Query_Builder_Where — абстрактный класс для построения условий SQL-запроса
-
Database_Query_Builder_Select — Конкретный класс для построения запроса выбора SQL
-
Database_Query_Builder_Insert — Абстрактный класс для построения запроса вставки SQL
-
Database_Query_Builder_Update — Абстрактный класс для построения запроса на обновление SQL
-
Database_Query_Builder_Delete — Абстрактный класс для построения запроса на удаление SQL
Database_Connection — Singleton и основной класс для взаимодействия с базой данных
Database_Query — базовый, конкретный класс для выполнения запроса SQL и получения результата
Database_Query_Builder — базовый абстрактный класс для построения SQL-запроса
Database_Query_Builder_Join — класс для создания объединений SQL
Database_Query_Builder_Where — абстрактный класс для построения условий SQL-запроса
Database_Query_Builder_Select — Конкретный класс для построения запроса выбора SQL
Database_Query_Builder_Insert — Абстрактный класс для построения запроса вставки SQL
Database_Query_Builder_Update — Абстрактный класс для построения запроса на обновление SQL
Database_Query_Builder_Delete — Абстрактный класс для построения запроса на удаление SQL
Следующая диаграмма изображает отношения между классами и методами, предоставляемыми классами.
БД API
Давайте изучим наиболее важные методы, доступные в классе DB в этом разделе.
пример
-
Цель — Создает и возвращает новый экземпляр Database_Connection .
-
Параметр —
-
$ db — Имя подключения к базе данных, определенное в файле конфигурации, необязательно.
-
-
Returns — возвращает объект Database_Connection
Цель — Создает и возвращает новый экземпляр Database_Connection .
Параметр —
$ db — Имя подключения к базе данных, определенное в файле конфигурации, необязательно.
Returns — возвращает объект Database_Connection
Например,
$db = DB::instance(); $db = DB::instance('test');
запрос
-
Цель — подготовить предоставленный оператор SQL и вернуть объект Database_Query, который можно использовать для вставки, обновления, удаления или извлечения данных из базы данных.
-
Параметр —
-
$ query — оператор SQL, может содержать заполнители;
-
$ type — тип SQL, необязательный (DB :: SELECT, DB :: INSERT, DB :: UPDATE и DB :: DELETE)
-
-
Returns — возвращает объект Database_Query
Цель — подготовить предоставленный оператор SQL и вернуть объект Database_Query, который можно использовать для вставки, обновления, удаления или извлечения данных из базы данных.
Параметр —
$ query — оператор SQL, может содержать заполнители;
$ type — тип SQL, необязательный (DB :: SELECT, DB :: INSERT, DB :: UPDATE и DB :: DELETE)
Returns — возвращает объект Database_Query
Например,
$query = DB::query('SELECT * FROM 'employees'');
last_query
-
Цель — получить последний выполненный запрос
-
Параметр — Нет
-
Returns — возвращает последний выполненный запрос
Цель — получить последний выполненный запрос
Параметр — Нет
Returns — возвращает последний выполненный запрос
Например,
$employees = DB::Select('Select * from 'employee''); $sql = DB::last_query();
Выбрать
-
Цель — создать выделенную часть запроса
-
Параметр —
-
$ columns — список имен столбцов базы данных
-
-
Returns — возвращает объект Database_Query_Builder_Select
Цель — создать выделенную часть запроса
Параметр —
$ columns — список имен столбцов базы данных
Returns — возвращает объект Database_Query_Builder_Select
Например,
$query = DB::select(); // Select * $query = DB::select('id', 'name'); // Select id, name
select_array (DB)
Это похоже на выбор, за исключением того, что мы можем отправить столбцы в виде массива.
$query = DB::select_array(array('id', 'name')); // Select id, name
вставить
-
Цель — Генерация вставляемой части запроса.
-
Параметр —
-
$ table_name — имя таблицы базы данных;
-
$ columns — массив столбцов таблицы
-
-
Returns — возвращает объект Database_Query_Builder_Insert
Цель — Генерация вставляемой части запроса.
Параметр —
$ table_name — имя таблицы базы данных;
$ columns — массив столбцов таблицы
Returns — возвращает объект Database_Query_Builder_Insert
Например,
$query = DB::insert('employee'); // Insert into employee $query = DB::insert('employee', array('id', 'name')); // Insert into employee (id, name)
Обновить
-
Цель — создать обновленную часть запроса
-
Параметр —
-
$ table_name — имя таблицы базы данных
-
-
Returns — возвращает объект Database_Query_Builder_Update
Цель — создать обновленную часть запроса
Параметр —
$ table_name — имя таблицы базы данных
Returns — возвращает объект Database_Query_Builder_Update
Например,
$query = DB::update('employee'); // update `employee`
удалять
-
Цель — создать часть запроса на удаление
-
Параметр —
-
$ table_name — имя таблицы базы данных
-
-
Returns — возвращает объект Database_Query_Builder_Delete
Цель — создать часть запроса на удаление
Параметр —
$ table_name — имя таблицы базы данных
Returns — возвращает объект Database_Query_Builder_Delete
Например
$query = DB::delete('employee'); // delete from 'employee'
API запросов
Database_Query предоставляет возможность установить соединение с базой данных, выполнить запрос и извлечь результат в виде ассоциативного массива или объекта. Давайте посмотрим методы, предоставляемые классом Database_Query.
set_connection
-
Цель — установить базу данных (сведения о соединении с базой данных), для которой будет выполняться запрос.
-
Параметр — $ db — имя соединения с базой данных
-
Returns — возвращает объект Database_Query
Цель — установить базу данных (сведения о соединении с базой данных), для которой будет выполняться запрос.
Параметр — $ db — имя соединения с базой данных
Returns — возвращает объект Database_Query
Например,
$query = DB::query('DELETE * FROM employee', DB::DELETE); $query->set_connection('2nd-db');
пары
-
Назначение — установить значение параметра, определенного в объекте Query.
-
Параметр —
-
$ param — имя параметра;
-
$ value — значение параметра
-
-
Returns — возвращает объект Database_Query
Назначение — установить значение параметра, определенного в объекте Query.
Параметр —
$ param — имя параметра;
$ value — значение параметра
Returns — возвращает объект Database_Query
Например,
// set some variables $table = 'employee'; $id = 1; $name = 'Jon'; // don't use $query = DB::query('SELECT * FROM '.$table.'. WHERE id = '.$id.' AND name = "'.$name.'"'); // but use $query = DB::query('SELECT * FROM :tablename WHERE id = :id AND name = :name'); $query->param('tablename', 'employee'); $query->param('id', $id); $query->param('name', $name);
Подобные методы
Параметры — это аналогичный объект, за исключением того, что он позволяет задать несколько значений одновременно.
$query->parameters (array( 'tablename' => $table, 'id' => $id, 'name' => $name });
привязывать
-
Назначение — установить переменную для параметра, определенного в объекте Query
-
Параметр —
-
$ param — имя параметра
-
$ var — переменная для привязки параметра
-
-
Returns — возвращает объект Database_Query
Назначение — установить переменную для параметра, определенного в объекте Query
Параметр —
$ param — имя параметра
$ var — переменная для привязки параметра
Returns — возвращает объект Database_Query
Например,
// bind a query parameter $table = 'employee'; $query = DB::query('DELETE * FROM :tablename', DB::DELETE); $query->bind('tablename', $table); // update the variable $table = 'employee_salary'; // DELETE * FROM `employee_salary`; $sql = $query->compile();
компилировать
-
Цель — компилировать объект запроса, определенный в запрос SQL
-
Параметр —
-
$ db — строка подключения, необязательно
-
-
Возвращает —
Цель — компилировать объект запроса, определенный в запрос SQL
Параметр —
$ db — строка подключения, необязательно
Возвращает —
Например,
// assign a value to a query parameter $table = 'employee'; $query = DB::query('DELETE * FROM :tablename', DB::DELETE); $query->param('tablename', $table); // compile the query, returns: DELETE * FROM employee $sql = $query->compile();
выполнять
-
Цель — выполнить запрос, определенный в объекте Query, и вернуть результат
-
Параметр —
-
$ db — имя соединения с базой данных
-
-
Returns — возвращает результат
Цель — выполнить запрос, определенный в объекте Query, и вернуть результат
Параметр —
$ db — имя соединения с базой данных
Returns — возвращает результат
Например,
// assign a value to a query parameter $table = 'employee'; $query = DB::query('DELETE * FROM :tablename', DB::DELETE); $query->param('tablename', $table); // execute the query $query->execute();
as_assoc
-
Цель — установить тип возвращаемого значения как ассоциативный массив вместо объектов
-
Параметр — Нет
-
Returns — возвращает текущий объект
Цель — установить тип возвращаемого значения как ассоциативный массив вместо объектов
Параметр — Нет
Returns — возвращает текущий объект
Например,
$query = DB::query('SELECT * FROM employee', DB::SELECT); $result = $query->as_assoc()->execute(); foreach ($result as $row) { echo $row['id']; }
as_object
-
Цель — установить тип возвращаемого значения как объект вместо ассоциативного массива.
-
Параметр — Нет
-
Returns — возвращает текущий объект
Цель — установить тип возвращаемого значения как объект вместо ассоциативного массива.
Параметр — Нет
Returns — возвращает текущий объект
Например,
$query = DB::query('SELECT * FROM employee', DB::SELECT); $result = $query->as_object()->execute(); foreach ($result as $row) { echo $row->id; } // have ORM model objects return instead $result = $query->as_object('Model_Employee')->execute();
API Query Builder
Классы, основанные на построителе запросов (Query_Builder), предоставляют возможности для динамического построения запросов SQL. Он имеет четыре класса, каждый из которых позволяет выбирать (Query_Builder_Select) , вставлять (Query_Builder_Insert) , обновлять (Query_Builder_Update) и удалять (Query_Builder_Delete) запросы. Эти классы являются производными от класса Query_Builder_Where (опция для генерации условий), который сам является производным от Query_Builder , базы всех классов.
Давайте посмотрим на методы, предоставляемые классом Query_Builder.
Выбрать
-
Цель — создать столбцы выбранных запросов.
-
Параметр —
-
$ columns — список столбцов, необязательно
-
-
Returns — возвращает текущий экземпляр
Цель — создать столбцы выбранных запросов.
Параметр —
$ columns — список столбцов, необязательно
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name') // select `name` $query = DB::select(array('first_name', 'name')) // select `first_name` as `name`
от
-
Назначение — создать подробную информацию о таблицах для отдельных запросов.
-
Параметр —
-
$ tables — список таблиц
-
-
Returns — возвращает текущий экземпляр
Назначение — создать подробную информацию о таблицах для отдельных запросов.
Параметр —
$ tables — список таблиц
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name')->from('employee') // select `name` from `employee`
где
-
Цель — Сгенерировать условия запросов на выбор, вставку и обновление.
-
Параметры —
-
$ column — имя столбца или массив ($ column, $ alias);
-
$ op — логические операторы, =,! =, IN, BETWEEN и LIKE, необязательно;
-
$ value — значение столбца
-
-
Returns — возвращает текущий экземпляр
Цель — Сгенерировать условия запросов на выбор, вставку и обновление.
Параметры —
$ column — имя столбца или массив ($ column, $ alias);
$ op — логические операторы, =,! =, IN, BETWEEN и LIKE, необязательно;
$ value — значение столбца
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name')->from('employee') $query = $query->where('name', '=', 'Jon'); // select `name` from `employee` where `name` = `Jon`;
Подобные методы
Подобные методы: where_open (), and_where_open (), or_where_open (), where_close (), and_where_close () или or_where_close (). Они похожи на методы where () за исключением того, что они добавляют дополнительные ключевые слова и скобки вокруг условий. Ниже приведен пример кода.
$query = DB::select('*')->from('employee'); $query->where('email', 'like', '%@gmail.com'); $query->or_where_open(); $query->where('name', 'Jon'); $query->and_where('surname', 'Peter'); $query->or_where_close(); // SELECT * FROM `employee` WHERE `email` LIKE "%gmail.com" OR (`name` = "Jon" AND `surname` = "Peter")
присоединиться
-
Назначение — генерировать таблицы объединений запросов на выборку.
-
Параметры —
-
$ table — имя таблицы или массив ($ table, $ alias);
-
$ type — тип соединения (LEFT, RIGHT, INNER и т. д.,)
-
-
Returns — возвращает текущий экземпляр
Назначение — генерировать таблицы объединений запросов на выборку.
Параметры —
$ table — имя таблицы или массив ($ table, $ alias);
$ type — тип соединения (LEFT, RIGHT, INNER и т. д.,)
Returns — возвращает текущий экземпляр
пример
$query = DB::select('name')->from('employee')->join('employee_salary') // select `name` from `employee` JOIN `employee_salary`
на
-
Назначение — создать условие объединений в запросах выбора.
-
Параметры —
-
$ c1 — имя таблицы или имя таблицы с псевдонимом в массиве;
-
$ op — логический оператор;
-
$ c2 — имя таблицы или имя таблицы с псевдонимом в массиве
-
-
Returns — возвращает текущий экземпляр
Назначение — создать условие объединений в запросах выбора.
Параметры —
$ c1 — имя таблицы или имя таблицы с псевдонимом в массиве;
$ op — логический оператор;
$ c2 — имя таблицы или имя таблицы с псевдонимом в массиве
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name')->from('employee')->join('employee_salary') $query = $query->on('employee.employee_id', '=', 'employee_salary.employee_id') // select `name` from `employee` JOIN `employee_salary` on // `employee.employee_id` = `employee_salary.employee_id`
Подобные методы
Связанными методами являются and_on () и or_on (). Они похожи на on () за исключением того, что они добавляют дополнительные ключевые слова и скобки вокруг соединений.
группа по
-
Цель — создать группу по запросам
-
Параметр — $ columns — Имя столбца, по которому группируется результат
-
Returns — возвращает текущий экземпляр
Цель — создать группу по запросам
Параметр — $ columns — Имя столбца, по которому группируется результат
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name')->from('employee') $query = $query->group_by('name'); // select `name` from `employee` group by `name`
имеющий
-
Назначение — сформировать группу по условиям SQL-запросов.
-
Параметр — $ column — имя столбца или массив ($ column, $ alias); $ op — логические операторы, =,! =, IN, BETWEEN и LIKE, необязательно; $ value — значение столбца
-
Returns — возвращает текущий экземпляр
Назначение — сформировать группу по условиям SQL-запросов.
Параметр — $ column — имя столбца или массив ($ column, $ alias); $ op — логические операторы, =,! =, IN, BETWEEN и LIKE, необязательно; $ value — значение столбца
Returns — возвращает текущий экземпляр
пример
$query = DB::select('name')->from('employee') $query = $query->group_by('name'); $query = $query->having('name', '!=', 'Jon'); // select `name` from `employee` group by `name` having `name` != `Jon`
Подобные методы
Сходными методами являются имеющая_open () и and_having_open (), or_having_open (), обладающая_close () и_having_close () или or_having_close (). Они аналогичны имеющим методы (), за исключением того, что они добавляют дополнительные ключевые слова и скобки вокруг условий.
сброс
-
Цель — сбросить запрос
-
Параметр — Нет
-
Returns — возвращает текущий экземпляр
Цель — сбросить запрос
Параметр — Нет
Returns — возвращает текущий экземпляр
Например,
$query = DB::select('name')->from('employee') $query->reset() $query = DB::select('name')->from('employee_salary') // select `name` from `employee_salary`
DBUtil класс
Класс DBUtil предоставляет возможность управлять и выполнять рутинные операции с базой данных. Вот некоторые из важных методов:
- set_connection — устанавливает соединение по умолчанию
DBUtil::set_connection('new_database');
- create_database — создает базу данных.
DBUtil::create_database('my_database');
- drop_database — удаляет базу данных.
DBUtil::drop_database('my_database');
- table_exists — проверяет, существует ли данная таблица.
if(DBUtil::table_exists('my_table')) { // Table exists } else { // Table does NOT exist, create it! }
- drop_table — удаляет таблицу.
DBUtil::drop_table('my_table');
- create_table — создает таблицу.
\DBUtil::create_table ( 'users', array ( 'id' => array('type' => 'int', 'auto_increment' => true), 'name' => array('type' => 'text'), ), );
Orm Toolkit
FuelPHP предоставляет расширенный уровень базы данных, используя концепцию ORM, основанную на популярном шаблоне Active record . Инструментарий включен в приложение, но не настроен по умолчанию. Он упакован как пакет, а имя пакета — orm. Мы можем добавить следующую конфигурацию в основной файл конфигурации fuel / app / config / config.php для загрузки набора инструментов orm.
'always_load' => array ( 'packages' => array ( 'orm', ), ),
Создание моделей
Orm предоставляет базовую модель класса Orm \ Model. Нам нужно дополнить наши модели моделью orm для использования функций ORM. Ниже приведен пример кода.
class Model_Employee extends Orm\Model {}
конфигурация
Orm предоставляет набор параметров для настройки модели на использование функций ORM. Они заключаются в следующем —
connection — установить статическое свойство _connection в модели, чтобы указать имя соединения.
class Model_Employee extends Orm\Model { protected static $_connection = "production"; }
имя таблицы — Установите статическое свойство _table_name в модели, чтобы указать имя таблицы бэкэнд-таблицы.
class Model_Employee extends Orm\Model { protected static $_table_name = 'employee'; }
первичный ключ — установите статическое свойство _primary_key в модели, чтобы указать первичный ключ бэкэнд-таблицы.
class Model_Employee extends Orm\Model { protected static $_primary_key = array('id'); }
Столбцы — Установите статическое свойство _properties в модели, чтобы указать столбцы внутренней таблицы. Он поддерживает data_type, метку, валидацию, элементы формы и т. Д.
class Model_Employee extends Orm\Model { protected static $_properties = array ( 'id', 'name' => array ( 'data_type' => 'varchar', 'label' => 'Employee Name', 'validation' => array ( 'required', 'min_length' => array(3), 'max_length' > array(80) ), 'form' => array ( 'type' => 'text' ), ), 'age' => array ( 'data_type' => 'int', 'label' => 'Employee Age', 'validation' => array ( 'required', ), 'form' => array ( 'type' => 'text' ), ), ); }
Условия — Установите статическое свойство _conditions, чтобы задать условия и порядок по опциям.
class Model_Employee extends Orm\Model { protected static $_conditions = array ( 'order_by' => array('id' => 'desc'), 'where' => array ( array('is_active', > true), ), ); }
Наблюдатели — Orm предоставляет систему событий, основанную на наблюдателях, для добавления поведения к конкретным событиям. Чтобы добавить поведение, сначала установите свойство _observers в модели. Затем определите поведение как класс и установите его в свойстве _observers вместе с событиями. Если событие не указано, поведение будет вызываться для всех событий. Мы также можем указать несколько вариантов поведения.
class Model_Employee { protected static $_observers = array ( 'example', // will call Observer_Example class for all events 'Orm\\Observer_CreatedOn' => array ( 'events' => array('before_insert'), // will only call Orm\Observer_CreatedOn at before_insert event ) ); }
Создайте
Как только мы настроим модель, мы можем сразу начать использовать методы. Orm предоставляет метод сохранения для сохранения объекта в базе данных. Мы можем установить данные, используя настроенные свойства следующим образом:
// option 1 $new = new Model_Employee(); $new->name = 'Jon'; $new->save(); // option 2, use forge instead of new $new = Model_Employee::forge(); $new->name = 'Jon'; $new->save(); // option 3, use array for properties $props = array('name' => 'Jon'); $new = Model_Employee::forge($props); $new>save();
Читать
Orm предоставляет метод find для получения данных из базы данных и привязки к объекту. Метод find работает в зависимости от входного параметра. Давайте посмотрим на различные варианты —
по первичному ключу — указание первичного ключа возвращает запись путем сопоставления первичного ключа настроенной таблицы.
$employee = Model_Employee::find(1);
первая / последняя запись — указание ‘first’ или ‘last’ приведет к получению первой или последней записи соответственно. Мы также можем передать заказ по желанию.
$entry = Model_Employee::find('first'); $entry = Model_Article::find('last', array('order_by' => 'id'));
All — при указании «all» все записи будут выбраны из настроенной таблицы. Мы можем указать порядок как вариант, так и условия.
$entry = Model_Employee::find('all'); $entry = Model_Article::find ('all', array ( 'where' => array ( array ('name', 'Jon'), ), 'order_by' => array ('id' => 'desc'), ));
Мы можем использовать Query API базового инструментария базы данных вместе с моделью для расширенного поиска следующим образом.
$query = Model_Employee::query()->where('category_id', 1)->order_by('date', 'desc'); $number_of_employees = $query->count(); $latest_employee = $query->max('id'); $young_employee = $query->min('age'); $newest_employee = $query->get_one(); $employees = $query->limit(15)->get();
Обновить
Обновление модели аналогично созданию, за исключением того, что вместо создания новой модели просто выберите модель для обновления, используя метод find, обновите свойство и затем вызовите метод save следующим образом.
$entry = Model_Employee:find(4); $entry->name = 'Peter'; $entry->save();
удалять
Orm предоставляет метод удаления для удаления модели. Просто выберите объект и вызовите метод delete.
$entry = Model_Employee:find(4); $entry->delete();
Рабочий пример
Давайте создадим рабочий пример в этой главе, чтобы понять модель и базу данных.
Создать базу данных
Создайте новую базу данных на сервере MySQL, используя следующую команду.
create database tutorialspoint_fueldb
Затем создайте таблицу внутри базы данных, используя следующую команду.
create table employee(id int primary key, name varchar(20), age int not null);
Настройте базу данных
Давайте настроим базу данных, используя файл конфигурации базы данных * fuel / app / config / db.php. Добавьте следующие изменения для подключения к серверу MySQL.
<?php return array ( 'development' => array ( 'type' => 'mysqli', 'connection' => array ( 'hostname' => 'localhost', 'port' => '3306', 'database' => 'tutorialspoint_fueldb', 'username' => 'root', 'password' => 'pass', 'persistent' => false, 'compress' => false, ), 'identifier' => '`', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => false, 'readonly' => false, ), 'production' => array ( 'type' => 'mysqli', 'connection' => array ( 'hostname' => 'localhost', 'port' => '3306', 'database' => 'tutorialspoint_fueldb', 'username' => 'root', 'password' => 'pass', 'persistent' => false, 'compress' => false, ), 'identifier' => '`', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => false, 'readonly' => false, ), );
Включить пакет ORM
Обновите основной файл конфигурации fuel / app / config / config.php, чтобы включить пакет ORM, добавив следующую конфигурацию.
'always_load' => array ( 'packages' => array ( 'orm' ), ),
Теперь ORM включен в вашем приложении
Создать модель сотрудника
Создайте новую модель Employee в папке модели «fuel / app / classes / model» . Это определяется следующим образом.
Employee.php
<?php class Model_Employee extends Orm\Model { protected static $_connection = 'production'; protected static $_table_name = 'employee'; protected static $_primary_key = array('id'); protected static $_properties = array ( 'id', 'name' => array ( 'data_type' => 'varchar', 'label' => 'Employee Name', 'form' => array ( 'type' => 'text' ), ), 'age' => array ( 'data_type' => 'int', 'label' => 'Employee Age', 'form' => array ( 'type' => 'text' ), ), ); }
Создать действие
Создайте новое действие action_model в контроллере Employee, расположенном в fuel / app / classes / controller / employee.php, следующим образом.
class Controller_Employee extends Controller { public function action_model() { // db based sql command to delete all employees $query = db::query('delete from `employee`'); $query->execute('production'); // orm based query to add new employees $model = new model_employee(); $model->name = "john"; $model->age = 25; $model->save(); $model = new model_employee(); $model->name = "peter"; $model->age = 20; $model->save(); // orm based query to fetch all employee data $data = array(); $data['emps'] = model_employee::find('all'); return response::forge(view::forge('employee/model', $data)); } }
Создать вид
Теперь создайте файл представления model.php, расположенный в «fuel / app / views / employee» . Добавьте следующие изменения в файл.
<ul> <?php foreach($emps as $emp) { ?> <li><?php echo $emp['name']; ?></li> <?php } ?> </ul>
Теперь запросите URL http: // localhost: 8080 / employee / model, и он даст следующий результат.