Зачастую требуется какая-либо манипуляция с данными в базе, при написании сниппета или плагина. Привожу сборник примеров, для работы с базой данных, которые использовал в рабочих проектах.
В MODx Evolution
Выборка данных из таблицы (SQL SELECT)
$all_zakaz_id = 100; $f = $modx->getFullTableName('web_groups').' gr JOIN '.$modx->getFullTableName('webgroup_names').' grn on gr.webgroup = grn.id '; $f .= 'JOIN '.$modx->getFullTableName('web_users').' usr on usr.id = gr.webuser'; // отправка запроса $q = $modx->db->select('usr.username ,grn.*', $f, 'gr.webuser = '.$id); // получить ответ в массиве $q = $modx->db->makeArray($q);
Вставка данных в таблицу (SQL INSERT)
$fields = array('type' => 'document', 'contentType' => 'text/html', 'pagetitle' => $username, 'alias' => $username, 'template' => 16 'parent' => 100, 'published' => 1, 'hidemenu' => 1, 'isfolder' => 1 ); // вставка $table_name = $modx->getFullTableName( 'site_content' ); $modx->db->insert( $fields, $table_name); // получить id записа, после вставки $dir_user = $modx->db->getInsertId();
Пример отправки запросов в базу (SQL SELECT, INSERT, UPDATE, DELETE)
// $modx - глобальная переменная $doc_id = 1; // номер ресурса $table = $modx->getFullTableName( 'site_tmplvar_contentvalues' ); // получить полное имя таблицы // отправка запроса в базу $modx->db->query("insert into ".$table." (tmplvarid,contentid,value)VALUES(12,".$doc_id.",'свойство')");
Обновление таблицы (SQL UPDATE)
$doc_id = 1; // номер ресурса $fields = array('value' => $_POST['work_step']); $table = $modx->getFullTableName( 'site_tmplvar_contentvalues' ); $result = $modx->db->update( $fields, $table, 'contentid = "' . $doc_id . '" and tmplvarid =12' );
Получить дочерние ресурсы
$modx->getDocumentChildren(12,1,0,'pagetitle, longtitle, id, description');