Модель

Материал из Micro PHP Framework
Перейти к: навигация, поиск

Модель данных - представляет данные, и методы для работы с этими данными.

DB Connection API Model API Relations API

Реагирует на запросы, изменяя своё состояние. Модель не зависит ни от контроллера, ни от представления. К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели.

Определяя свой новый тип данных в виде модели вы можете: переопределить события модели и/или дописать дополнительные методы для работы с этим типом данных.

Обязательный метод

При создании нового типа данных, вам необходимо указать, где искать информацию об этих данных:

<?php
public static function tableName() {
    return 
'table_name';
}

Дополнительные методы

Элементам данных можно сопоставить их названия используя метод attributeLabels :

<?php
public function attributeLabels() {
    return [
        
'attribute'=>'Label'
    
];
}

Дополнительно можно определить правила, с помощью которых, обрабатывать информацию относящуюся к этим данным:

<?php
public function rules() {
    return [
        [
'email, pass''required'],
        [
'email''email'],
        [
'pass''string''min'=>6'max'=>32],
    ];
}

Список некоторых базовых правил:


boolean - Проверка истинности

   * true - истинное значение
   * false - ложное значение

captcha - Проверка значения каптчи

   * Параметров нет

compare - Сравнение значения

   * attribute - нужное значение из атрибута
   * value - нужное значение

email - Проверка правильности адреса E-mail

   * Параметров нет

file - Проверка входных файлов

   * maxFiles - максимум файлов в multiple
   * types - разрешённые типы файлов
   * minSize - минимальный размер файла
   * maxSize - максимальный размер файла

number - Проверка является ли значение числом

   * Параметров нет

range - Проверка входит ли значение в заданный интервал

   * min - минимальное значение
   * max - максимальное значение
   * step - размер шага

regexp - Проверка значения на совпадение регулярному выражению

   * pattern - выражение для сверки

required - Проверка существования значения

   * Параметров нет

string - Проверка длины строки

   * min - Минимальная длина
   * max - Максимальная длина

unique - Проверка уникальности значения

   * table - Таблица БД
   * attribute - элемент таблицы

url - Проверка правильности URL адреса

   * Параметров нет

События

  • beforeCreate - перед созданием
  • afterCreate - после создания
  • beforeSave - перед сохранением
  • afterSave - после сохранения
  • beforeUpdate - перед обновлением
  • afterUpdate - после обновления
  • beforeDelete - перед удалением
  • afterDelete - после удаления

Все эти события можно переопределять в потомках, что существенно дополняет и расширяет возможности управления данными. Например:

<?php
public function beforeCreate() {
    if (
parent::beforeCreate()) {
        
// logic
        
return true;
    }
    return 
false;
}

Отношения

Отношения модели - это объединение нескольких типов данных по каким-либо признакам. они могут быть двух типов: "один к одному" и "один ко многим". Описываются отношения примерно так:

<?php
public function relations() {
    
$keys = new Relations;
    
// add any keys
    
return $keys;
}

И объявление отношений сводится к простому дополнению в выделенном комментарием месте:

<?php
$keys 
= new Relations;
/*
 1 - имя соединения
 2 - присоединяемая модель
 3 - один или несколько
 4 - параметры соединения (from - исходное поле, to - внешнее поле)
 5 - условия соединения
 6 - аргументы соединения

  • /

$keys->add('name_relation''relation_model'true|false, ['from','to'], 'a.id>:num', ['num'=>5]);
return 
$keys;