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

Группа

Если необходимо связать записи между собой внутри одной таблицы, используется тип данных Группа group. Например, у товаров должны быть сопутствующие товары которые задаются для каждого товара индивидуально, а их количество может быть различным у каждого товара.

class Products extends Model
{
    protected $name = 'Товары каталога';
    
    protected $model_elements = [
        ['Активен', 'bool', 'active', ['on_create' => true]],
        ['Название', 'char', 'name', ['required' => true]],
        ['Цена', 'int', 'price', ['required' => true]],
        ['Позиция', 'order', 'order'],
        ['Раздел каталога', 'enum', 'parent', ['foreign_key' => 'Catalogs', 
                                               'is_parent' => true]],
        ['Изображения', 'multi_images', 'images'],
        ['Описание', 'text', 'desc', ['rich_text' => true]],
        ['Рекомендуемые товары', 'group', 'additional']
    ];
}

При извлечении данных из поля 'additional' их удобно подставлять в оператор 'field->in' или исключающий оператор 'field->not-in', описанный в разделе Конструктор запросов.

//Нашли нужный товар
$product = $mv -> products -> find(35);

//Извлекаем сопутствующие товары если они есть
if($product -> additional)
{
    $rows = $mv -> products -> select(['active' => 1, 
                                       'order->asc' => 'order', 
                                       'id->in' => $product -> additional]);
    foreach($rows as $row)
    {
        ...
    }
}
Альтернативным способом группировки товаров является добавление поля типа enum, когда каждому товару выбирается из выпадающего списка название его группы.
class Products extends Model
{
    protected $name = 'Товары каталога';
    
    protected $model_elements = [
        
        ...
        
        ['Рекомендуемые товары', 'enum', 'additional', ['values_list' => [
                                                            'hits' => 'Хиты',
                                                            'sale' => 'Распродажа']]]
    ];
}

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

Многие ко многим

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

Управление записями
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться