Ну вообще Model это не полноценная ORM в современном понимании, а скорее некий уровень абстракции между объектами программы и БД.
Т.е., для примера, у нас есть в БД таблица crmCompany, содержащая поля: id, name, inn, kpp, address. В этом случае, чтобы не работать напрямую с БД через SQL, а оперировать объектом Company мы можем создать в директории models своего пакета файл company.php следующего содержания:
- Код: Выделить всё
<?php defined('C5_EXECUTE') or die(_("Access Denied."));
class Company extends Model {
var $_table = 'crmCompany';
}
?>
Уже этот минимальный код позволяет работать с объектом таким образом:
- получение названия компании по ее id
- Код: Выделить всё
<?php
Loader::model('company', 'crm_pkg');
$client = new Company();
$company->Load('id=1');
echo $company->name;
?>
- изменение ИНН компании
- Код: Выделить всё
<?php
Loader::model('company', 'crm_pkg');
$client = new Company();
$company->Load('id=1');
$comapny->inn = '1234567891';
$company->Save(); ?>
- создание новой компании
- Код: Выделить всё
<?php
Loader::model('company', 'crm_pkg');
$client = new Company();
$comapny->name = 'OOO Рога и Копыта';
$comapny->inn = '1234567891';
$comapny->kpp = '1234567';
$comapny->address = 'г. Мухосранск, ул. Стандартная, д. 1';
$company->Save();
?>
Излишне говорить, что модель компании в реальной жизни будет несколько сложнее и наполнена различными методами, реализующими бизнес-логику. Например, в случае необходимости обработки данных перед их сохранением в БД можно перекрыть метод Save и т.п.
Кроме того, модели могут быть связанными, вложенными и много еще чего интересного можно наворотить, чтобы абстрагироваться от прямых запросов в БД. Все это доступно т.к. класс Model наследуется от класса ADOdb_Active_Record (ADOdb_Active_Record is an Object Relation Mapping (ORM) implementation using PHP.) и вся его функциональность доступна нам в работе.
Подробнее можно почитать вот здесь:
(на английском) и
(на русском).
Если есть вопросы, на которые смогу ответить, то готов помочь.