Учебники

FuelPHP — модели и база данных

Модель играет важную роль в веб-каркасе 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, и он даст следующий результат.