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

Объект класса Record

Запись из таблицы можно извлечь при помощи метода модели find($conditions), который возвращают объект класса Record. Объект данного класса предоставляет возможность доступа и изменения значений полей записи в таблице. Параметры выборки $conditions представляют собой ассоциированный массив, описанный в разделе Конструктор запросов.

Например возьмем модель, описывающую книги.

class Books extends Model
{
    protected $name = 'Книги';

    protected $model_elements = [
        ['Название', 'char', 'name', ['required' => true]],
        ['Автор', 'enum', 'author', ['foreign_key' => 'Authors']],
        ['Дата выхода', 'date', 'date'],
        ['Фотография обложки', 'image', 'photo'],
        ['Краткое описание', 'text', 'description']
    ];
}

Добавляем в модель метод для вывода списка книг.

<?
public function display()
{
    //Все записи в алфавитном порядке
    $rows = $this -> select(['order->desc' => 'name']);
    $html = '';

    //Создаем ссылку на каждую книгу
    foreach($rows as $row) 
        $html .= '<li><a href="'.$this -> root_path.'books/'.$row['id'].'">'.$row['name'].'</a></li>';

    return $html;
}

После вызова метода display() мы увидим список ссылок на странице с книгами. Создадим файл шаблона view-book.php для отображения информации о книге.

//Файл config/routes.php

'/books' => 'view-books-all.php',
'/book/*' => 'view-book.php',

Содержимое файла views/view-book.php

<?
//Берем вторую часть URL и сразу проверяем, чтобы она была числовой
$book_id = $mv -> checkUrlPart(1, 'numeric');

//Извлекаем запись по ее id
$book = $mv -> books -> find($book_id);

//Если запись не найдена показываем 404 ошибку
$mv -> display404($book);
<?
include $mv -> views_path.'main-header.php';
?>
<div class="content">
    <h1><? echo $book -> name; ?></h1>
    <h3>Автор:<? echo $book -> getEnumTitle('author'); ?></h3> 
    <div>Дата:<? echo I18n::formatDate($book -> date); ?></div>
    <? echo $book -> resizeImage('photo', 200, 300); ?>
    <h4>Краткое описание</h4>
    <p><? echo nl2br($book -> description); ?></p>
</div>   
<?
include $mv -> views_path.'main-footer.php';
?>

Аналогично можно взять самую новую книгу с списке или первую книгу конкретного автора.

$book = $mv -> books -> find(['order->desc' => 'date']); 
$book = $mv -> books -> find(['order->asc' => 'date','author' => 42]);

Принципы работы объекта Record

Доступ к полям извлеченной записи осуществляется как доступ к свойствам объекта (если данное свойство у объекта присутствует, то его значение будет возвращено).

//Получение свойства
echo $book -> name;
echo I18n::formatDate($book -> date);
echo nl2br($book -> description);

//Установка значения свойства
$book -> name = 'Мастер и Маргарита';
$book -> description = 'Классика русской литературы.';

//Обновление записи
$book -> update();

//Все поля записи
Debug::pre($book -> all());

//Id записи 'Булгаков М.' в таблице модели Authors
$book -> author = $mv -> authors -> find(['name' => 'Булгаков М.']) -> id;

//Извлечение названия (заголовка) поля типа 'enum' 
echo $book -> getEnumTitle('author');

//Уменьшение и вывод изображения
echo $book -> resizeImage('photo', 200, 300);
echo $book -> cropImage('photo', 100, 100);

Прочие методы

  • setValues($values) - передать массив значений полей в объект Record
  • all() - извлечь значения всех полей в виде ассоциированного массива
  • getEnumTitle($field) - получить название (не ключ) поля типа enum

У объекта класса Record присутствуют методы для работы с файлами и изображениями, описанные в разделе Файлы и изображения:

  • resizeImage($field, $width, $height) - сжатие изображения с сохранением пропорций
  • cropImage($field, $width, $height) - сжатие и обрезка изображения
  • displayImage($field) - вывод html тэга img для поля типа image с исходными размерами
  • displayFileLink($field) - вывод ссылки на файл для скачивания
  • asArrays($field) - извлечение изображений типа multi_images
  • getFirstImage($field) - извлечение первого изображения из поля типа multi_images

Предположим в модели есть поле типа multi_images с названием 'pictures', а $product - экземпляр класса Record.

//Массив с путями к изображениям и комментариями
$images = $product -> extractImages('pictures');
$images = $product -> asArrays('pictures');

//Первое изображение в массиве
$image = $product -> getFirstImge('pictures');

Также в классе Record присутствуют методы CRUD описанные в разделе Управление записями.

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

Вывод данных в шаблоне

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

Файлы и изображения
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться