четверг, 10 ноября 2016 г.

ModX и запросы xPDO

Бывает, что после длительного времени не пользуясь определенными инструментами, забываешь как делать те или иные вещи.
Постоянно ползать по интернетам в поисках конструкций для работы с собственными  таблицами на ModX надоело, и поэтому я просто оставлю их здесь!

Для начала и самое основное, что нужно сделать это поставить модуль CMP Generator для того, чтобы не конструировать всяческие схемы, а сделать это автоматически.

Далее собстн надо построить данные схемы и пакеты (смотрим офф документацию).
P.S. Для таблиц вида modx_mytable не нужно ставить префикс т.е. картинка больжна быть следующая


Далее следует писать кодец. Поехали!!!

Кусок кода номер рас обязательный
$package_path=$modx->getOption('core_path').'components/Test/model/';$modx->addPackage('Test', $package_path);

Данный кусок кода подключает пакет содержащий схемы для работы с вашей таблицей.

Кусок кода номер два 

Выборка иp БД
$docs = $modx->getCollection('Test');
foreach($docs as $doc){
    $elem=$doc->toArray();
    echo $elem['text'];
}

Выборка с условием
$q = $modx->newQuery('Test');$q->select(array( 'contentid'));
$q->where(array( array( 'key'=123,
)));$q->prepare();
Добавление в базу
$elem_add=$modx->newObject('Test',array(
        'text'=>'Qwerty',
    ));
 $elem_add->save(); 
Изменение записи
    $c = $modx->newQuery('modResource');
    $c->command('update');
    $c->set(array(
        'hidemenu'  => 1  
    ));
    $c->where(array(
        'parent'    => 11,  
    ));
    $c->prepare();
    print $c->toSQL();
    $c->stmt->execute(); 
 Выполнение стандартных SQL запросов
$sql ="insert into modx_test (text) values('Пока')";
$stmt = $modx->prepare($sql);
$stmt->execute(); 

Функцию удаления из Базы данных можно организовать как через выполнение стандартного SQL запроса так и через модифицирование функции изменения. 
Для всего остального гугл в помощь!

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