Создание таблиц через MIGX

У новичков часто возникает вопрос, как можно быстро создать какую нибудь таблицу и начать с ней работать на пример из сниппета. Я раньше делал всегда через пакет Василия modExtra, выпиливая из него то, что мне не нужно. Но это долго и не совсем удобно, если нужна одна — две таблички. MIGX решает эту проблему.


Итак, начнем с того, что мы установим MIGX и зайдем в него. Во вкладке Package Manager нам необходимо ввести Название пакета (Package Name):



И нажимаем кнопку Create Package. В директории core/components/youpackagename создались необходимые файлы.
Теперь, нам необходимо написать схему будущей таблицы или таблиц. Очень подробно об этом расписано на одном из курсов Василия. Так же есть официальная документация.
Мы создадим простую табличку для примера:
<?xml version="1.0" encoding="UTF-8"?>

<model package="electrica" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="" phpdoc-subpackage="" version="1.1">

    <object class="electricaItem" table="electrica_items" extends="xPDOSimpleObject">
        <field key="title" dbtype="varchar" phptype="string" precision="100" null="false" default="" />
        <field key="description" dbtype="text" phptype="string" null="false" default="" />
    </object>

</model>
и вставим схему во вкладку Xml Scheme и нажимаем кнопку Save Scheme:



Все, схема готова. Теперь, переходим на вкладку Create Table и нажимаем Create Tables. Теперь в базе у нас есть наша табличка:



Все. Теперь мы можем работать с нашей таблицей.

<?php
//Добавляем пакет
if(!$modx->addPackage('electrica', MODX_CORE_PATH . 'components/electrica/model/')){
    return 'false';
}
// Создаем запись
$table = $modx->newObject('electricaItem');
$array = [
    'title' => 'Какой то заголовок',
    'description' => 'Какое то описание'
    ];
    
$table->fromArray($array);
$table->save();

//Делаем выборку
$response = $modx->getIterator('electricaItem');

foreach($response as $res){
    print_r($res->toArray());
}
Вот таким достаточно простым способом можно быстро создавать свои таблицы и работать с ними.

Так же есть отличное видео, в котором Артем Зернов рассказывает о других фишках при работе с MIGX.
Михаил
25 апреля 2019, 11:19
modx.pro
33
5 826
+18
Поблагодарить автора Отправить деньги

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

Николай Савин
25 апреля 2019, 12:09
1
0
Никогда не задумывался что так можно. Интересный способ — и правда быстрее. Правда надо в XML схемах ориентироваться.
Но надо еще понимать, что в этом случае мы не получаем управление записями в табличке внутри админки, только через API.
Или MIGX и здесь может помочь?
    Михаил
    25 апреля 2019, 12:17
    +3
    Может. Есть MIGX DB. Я потом статью напишу.
    Хотя в админку проще через modExtra делать)
      Николай Савин
      25 апреля 2019, 12:29
      0
      Как минимум более знакомо и управляемо.
        Дима Сайт old см. профиль
        25 апреля 2019, 12:42
        +1
        Я потом статью напишу.
        @Михаил только не обманите :) Очень ждем! MIGX крутой но такой «тяжелый» оказался при освоении на практике…
        Николай
        25 апреля 2019, 12:48
        0
        А кто какой modExtra пользуется? Самой первой, или последней?
          Михаил
          25 апреля 2019, 13:06
          +1
          Я пользуюсь обеими версиями)
          Evgeny Gromin
          25 апреля 2019, 13:41
          0
          Через CMPGenerator Pro тоже просто)) в 5 кликов) Но таблицу самому в БД создавать (но это не точно, просто я так делаю)
            Николай
            27 апреля 2019, 18:37
            0
            Подскажи пожалуйста как. Я пробовал — не получается. Даже заметку на днях написал: modx.pro/help/18126
        Иван Бочкарев
        25 апреля 2019, 13:33
        0
        Можно и в офф доку закинуть данную заметку.
        iWatchYouFromAfar
        25 апреля 2019, 13:38
        0
        Вообще MIGX это прям золото для MODx. Один из самых полезных пакетов.
        Миша, спасибо за статью!
          srs
          srs
          25 апреля 2019, 20:41
          0
          Только так и делал. Впервые увидел подобный способ у автора шопкипера (кстати в документации к 3 версии этот способ вроде был описан) и думал, что это достаточно известная фишка migx…
          з.ы. А еще там можно собирать таблицы кнопочно-тыкочным путем, через конструктор и делать импорт и этих экспорт настроек. Дико удобная штука.
            Михаил
            25 апреля 2019, 20:50
            0
            в MIGX все кажись кнопочно-тыкочным путем ))))
              Сергей
              26 апреля 2019, 09:07
              +1
              Миша, кстати ты не упомянул еще об одной интересной особенности MIGXdb. Схему можно не писать вручную, а создав «пустую» заготовку для объекта например, который просто наследует xPDOSimpleObject (в котором уже прописан конфиг создающий столбец id), затем создав таблицы для этого объекта — можно в phpmyadmin визуально добавлять все остальные поля, элементы и т.д. в эту таблицу, а потом на стороне MIGXdb просто нажать кнопку парсинга схемы и она сама сгенерирует нужную xml schema на основе существующей таблицы в БД.

              Получается «обратный способ». Можно либо классическим способом создавать объекты, прописывая schema полностью, либо способом что я описал выше
                Александр Туниеков
                08 февраля 2020, 16:31
                0
                А вот это не знал :-) лови плюс. Блин почему-то не ставиться плюс :-(
            Александр
            21 мая 2021, 07:59
            0
            Здравствуйте! Я новичок в ModX. Создаю свою табличку по данной статье и после нажатия на кнопку Create Table таблички в базе данных не обнаруживаю. Как называется таблица в базе данных в этом примере?
              Наумов Алексей
              21 мая 2021, 08:56
              +1
              В примере из статьи это таблица modx_electrica_items

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

              Стоит посмотреть в логах modx, может быть там ошибка написана.
                Александр
                21 мая 2021, 11:32
                0
                Спасибо Алексей!!! Ошибся в схеме. Вот прям хочется картину заказать: «Сначала прочти логи, потом задавай вопросы» и дарить людям. Сегодня например себе)))
              Futuris
              17 августа 2022, 12:54
              0
              Вот таким достаточно простым способом можно быстро создавать свои таблицы и работать с ними.
              Простите за глупый вопрос, а где должен выполняться этот код?
                Михаил
                17 августа 2022, 18:48
                0
                Это я для примера в снипете сделал… Можно в плагине или просто в скрипте. В общем в любом удобном месте
                  Futuris
                  17 августа 2022, 20:02
                  0
                  Спасибо. А на какое событие должен этот плагин запускаться? Или если это скрипт — где разместить этот файл?
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                24