mmxDatabase 1.2.0

Выгрузил новую версию дополнения на packagist.org. Изменений не очень много, но все они интересные.

Во-первых, теперь запросы через Eloquent учитываются в системных плейсхолдерах MODX:
[^q^] queries, time: [^qt^]

Во-вторых, если включить системную настройку log_level на третий уровень (INFO), то вы увидите все SQL запросы прямо в журнале, вместе со временем выполнения.


В-третьих, модели элементов со статичными файлами начали поддерживать новые методы.
  • getStaticFile() — получение пути к статичному файлу, или null
  • getContent() — получение содержимого из файла, если есть, или из БД — если нет
  • deleteStaticFile() — удаление привязанного файла, элемент становится не статичным
Напоминаю, что модели с возможностью указывать статичные файлы, это: Template, TV, Snippet, Chunk и Plugin.

Также модели получили связь с Source, который пока поддерживает только обычные файловые источники (то есть, modFileMediaSource). Думаю, другие он поддерживать и не будет, потому что мало кому придёт в голову хранить файловые шаблоны где-нибудь в S3.

Это всё было сделано для нормальной работы с mmxFenom.

И в-четвёртых, была добавлена поддержка древнего PHP 7.4. Изначально я не собирался этого делать, но увы, есть еще куча сайтов на этой версии, мир не идеален.

Для проверки работособности на разных версиях даже написал простенькие тесты.

Бонусом еще покажу, как дебажить SQL запросы в своих сниппетах:
<?php

$manager = $modx->services->get('mmxDatabase')->getDatabaseManager();
$manager->enableQueryLog(); // включаем логирование

// Тут идут ваши запросики...
// Resource::query()->where(....

$manager->disableQueryLog(); // выключаем логирование
$log = $manager->getQueryLog(); // получаем записи

return print_r($log, true); // отдаём распечатанные записи

Время указывается в миллисекундах:


Обновляемся как обычно:
composer update
Василий Наумкин
05 мая 2024, 10:27
modx.pro
352
+11

Комментарии: 4

Наумов Алексей
06 мая 2024, 09:00
+1
За поддержку php 7.4 все ж спасибо! Как я писал в комментарии к прошлой заметке, я запустил mmxDatabase в связке с сайтом на modx 2.8.5, что оказалось очень удобно для одной из текущих задач (а именно выгрузка всего контента сайта в формате json для переноса данных на другую платформу). с mmxDatabase это решается очень быстро!
Наумов Алексей
08 мая 2024, 09:52
+1
Кстати, не разбирался, но заметил 2 нюанса с датами:
1. часовые пояса нужно как-то настроить… как?..
2. Теряется время! У unpub_date в базе 100% время прописано.

Вот пример данных, которые mmxDatabase мне выдал в модели:
"pub_date": "1969-12-31T21:00:00.000000Z",
"unpub_date": "2024-07-31T21:00:00.000000Z",
А вот то, что выдает $resource->toArray():
[pub_date] => 0
[unpub_date] => 2024-08-01 11:02:06
У дат видно смещение на 3 часа (московский часовой пояс в modx установлен), а у unpub_date время потерялось… осталась только дата.
    Василий Наумкин
    09 мая 2024, 12:40
    +2
    Да, там был полный бардак с датами — сейчас привёл в порядок и написал тесты для проверки.

    Обновляйся на версию 1.2.1
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4