MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

Управление записями

Под записью в MV подразумевается одна строка в таблице модели. Запись состоит из полей различных типов. Для операций над записями таблицы используется объект класса Record, управляющий одной записью в таблице.

При работе с объектом Record нужно учитывать следующие особенности.

  • При CRUD операциях не запускаются событийные методы модели вида beforeCreate, afterCreate.
  • Объект класса Record не сохраняет версии и не проверяет поля на запрет редактирования.
  • При удалении через админку запись помещается в корзину, а при использовании класса Record удаляется безвозвратно.
  • Методы по работе с записями воздействуют только на те поля таблицы, которые объявлены в модели в массиве $model_elements. Теоретически в таблице базы данных могут быть дополнительные поля, с ними работать можно через Прямые запросы к базе данных.

Рассмотрим управление записями на примере модели историй, которые добавляют пользователи на сайте.

class Stories extends Model
{
    protected $name = 'Истории';

    protected $model_elements = [
       ['Активировать', 'bool', 'active'], 
       ['Дата', 'date_time', 'date', ['required' => true]],
       ['Название', 'char', 'name', ['required' => true]],
       ['Тематика', 'enum', 'theme', ['values_list' => [
                                         'family' => 'Семья', 
                                         'home' => 'Дом', 
                                         'travel' => 'Путешествия']]],
       
       ['Содержание', 'text', 'content', ['required' => true]]
    ];
}

Создание записи

//Создаем пустую запись
$story = $mv -> stories -> getEmptyRecord();

//Вносим данные полей
$story -> active = 1;
$story -> name = 'Как стричь газон';
$story -> theme = 'home';
$story -> date = I18n :: getCurrentDateTime();
$story -> content = 'Текст';

//Сохраняем в базу данных
$story -> create();

//Данные для полей также могут быть получены из массива или формы
$story -> setValues([
    'active' => 1,
    'name' => 'Название истории',
    'content' => 'Содержание'
]);

//Передача массива данных из формы
$story -> setValues($form -> getAllValues()) -> create();

//Метод create() возвращает id созданной записи,
//который может быть использован в дальнейшем
$id = $story -> create();

Редактирование записи

//Извлекаем запись и меняем значения полей
$story = $mv -> stories -> find(75);

$story -> active = 0
$story -> name = 'Как стричь газон осенью';
$story -> update();

//Также данные можно получить из массива или формы
$story -> setValues($form -> getAllValues(['name', 'content'])) -> update();
$story -> setValues(['active' => 1, 'theme' => 'family']) -> update();

//Если заранее неизвестно существует ли нужная запись,
//то можно использовать следующие методы
$story = $mv -> stories -> findRecordOrGetEmpty(['name' => 'Как стричь газон']);
$story -> name = 'Как стричь газон';
$story -> active = 1;

//Создаем либо обновляем запись (если запись уже существует)
$story -> save();

Удаление записи

//Запись удаляется без помещения в корзину
$story = $mv -> stories -> find(['name' => 'Как стричь газон осенью']);
$story -> delete();

//Запись помещается в корзину (можно увидеть в админке)
$mv -> stories -> setId(35) -> delete();

Массовое редактирование записей

Используется метод updateManyRecords($params, $conditions), где $params - параметры которые нужно изменить для всех записей, $conditions - условия выборки, описанные в разделе Конструктор запросов.

//Активируем все записи модели
$mv -> stories -> updateManyRecords(['active' => 1]);

//Активируем все записи по определенному признаку
$mv -> stories -> updateManyRecords(['active' => 1], ['theme' => 'home']);

//Более сложный вариант
$mv -> stories -> updateManyRecords([
    'active' => 0,
    'content' => ''
], [
    'active' => 1,
    'theme' => ['travel', 'home'],
    'date<=' => '2023-09-25 12:00:00'
]);

Массовое удаление записей

Используется метод deleteManyRecords($conditions), где $conditions - условия выборки, описанные в разделе Конструктор запросов.

$mv -> stories -> deleteManyRecords(['active' => 0, 'theme' => 'home']);

Удаление всех записей

Метод clearTable() удаляет все строки таблицы и сбрасывает параметр auto increment для первичного ключа. Если передан необязательный параметр, то очищается не базовая таблица модели, а та, название которой передано в параметре.

//Очистка таблицы stories
$mv -> stories -> clearTable(); 

//Очистка таблицы comments
$mv -> stories -> clearTable('comments');

Предыдущий раздел

Группа

Следующий раздел

Управление простыми моделями
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться