Как программно обратится к последней в списке ноде?

Главные вкладки

Аватар пользователя I_D I_D 19 декабря 2019 в 19:24

Добрый день!
Drupal 7.
Пишу свой хук. Необходимо программно список нод сортировать по созданному полю field_journal_outgoing_date ( тип дата) и выбрать первую запись, прочитать значение title и нарастить номер на 1.
Вот фрагмент моего рабочего кода, но в нем сортировка по дате создания, а нужно по полю field_journal_outgoing_date

<?php
$query 
"SELECT title  FROM {node} n ".
              
"WHERE n.type = :type ".
              
"ORDER BY  n.created DESC limit 1";
     
$content_type 'journal_outgoing'// тип контента..........
     
$count_node db_query($query, array(':type' => $content_type))->fetch();
     
// из номера выбираем только числа
     
preg_match_all("/\d+/"$count_node->title$matches);.....
     
// к первому найденному числу в строке добавляем 1
     
$next_num $matches[0][0] + 1;
     
$doc_number $next_num;
?>

Подскажите, пожалуйста, как реализовать задуманное?
Спасибо.

Комментарии

Аватар пользователя I_D I_D 20 декабря 2019 в 13:07

Спасибо за помощь. Переписал код. Работает так как нужно.

<?php$query = new EntityFieldQuery();
     $query->entityCondition('entity_type', 'node')
           ->propertyCondition('status', NODE_PUBLISHED)
           ->propertyCondition('type','journal_outgoing')
           ->fieldOrderBy('field_journal_outgoing_date','value','DESC')
           ->propertyOrderBy('created', 'DESC')
           ->range(0, 1);

    $result = $query->execute();

    if (isset($result['node'])) {
   $nodes = node_load_multiple(array_keys($result['node']));
   foreach ($nodes as $node) {
   // из номера выбираем только числа
    preg_match_all("/\d+/", $node->title, $matches);
    // к первому найденному числу в строке добавляем 1
     $next_num = $matches[0][0] + 1;
     $doc_number = $next_num;
     }?>