×

Запросы к таблицам базы данных в MODx Revolution

Функция newQuery() несколькими способами.


// новый запрос
$query = $modx->newQuery('modResource');
// связь таблиц site_content и users
$query->innerJoin('modUser', 'key', "key.id = modResource.createdby");
// выбираем название статьи и имя пользователя который публикует статью
$query->select('modResource.pagetitle, key.username'); 
// Обратная сортировка по дате публикации
$query->sortby('modResource.createdon', 'DESC');
// выбираем 10 записей
$query->limit(10);

// если запрос подготовлен и выполнен
if ($query->prepare() && $query->stmt->execute()) {
// так можно проверить sql запрос
//echo $query->toSQL(); 

// получаем данные
$result = $query->stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($result as $row) {
        echo $row['pagetitle'].' '.$row['username'];
    } <code><span class="pun">}</span></code>

Функция getCollection()


$query = $modx->newQuery('modResource');

$query->select('id, pagetitle, createdon');
$query->sortby('createdon', 'DESC');
$query->limit(10);
$query->prepare();

// получаем коллекцию объектов
$result = $modx->getCollection('modResource', $query);

foreach ($result as $row) {
    
    // связь с таблицей users по алиасу CreatedBy
    $user =  $row->getOne('CreatedBy');
    // имя пользователя
    echo $user->get('username') ;
    // заголовок ресурса
    echo $row->get('pagetitle');
}

xPDOCriteria()


// пишем запрос
$sql = "SELECT `pagetitle`, `username` FROM `modx_site_content` AS `modResource` JOIN `modx_users` `key` ON `key`.`id` = `modResource`.`createdby` ORDER BY `modResource`.`createdon` DESC LIMIT 10"; 
// получаем объект
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()){
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach ($res as $row){
        echo $row['username'];
        echo $row['pagetitle'];
    }

}

query()


$sql = "SELECT `pagetitle`, `username` FROM `modx_site_content` AS `modResource` JOIN `modx_users` `key` ON `key`.`id` = `modResource`.`createdby` ORDER BY `modResource`.`createdon` DESC LIMIT 10"; 

$query = $modx->query($sql);

$res = $query->fetchAll(PDO::FETCH_ASSOC);
    foreach ($res as $row){
        echo $row['username'];
        echo $row['pagetitle'];
    }

 

01 января 1970, 03:00       524

Комментарии ()