Лучший способ проверить, работает ли Joomla! 3.4.0 статья уже существует

Я создаю статьи в Joomla! программно с помощью JTable. Поскольку у меня есть много статей, которые нужно периодически синхронизировать, мне нужно проверять каждую статью, если она уже существует, прежде чем вставлять ее (иначе выдает ошибки).

Как лучше всего это сделать?

Моя идея заключалась в том, чтобы получить все статьи из базы данных и сравнить уникальные поля. Но при получении статей возникли проблемы (пустая страница). Вот код:

function getExistingArticles(){

    // Create a new query object.
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);

    $query->select('*')->where('`a.created_by_alias`= `article_synchronizer`'); // Prepare query.

    $query->from('`#___categories` AS a');

    // Reset the query using newly populated query object.
    $db->setQuery($query);
    $articles = $db->loadObjectList(); // Execute query, return result list.

    return $articles;
}

Если это «лучший» способ в Joomla! проверить, существует ли уже определенная статья, где проблема в этом коде, которая приводит к пустой странице?

В противном случае, как лучше всего проверить, является ли Joomla! статья с определенным содержанием уже существует?


person Allinternal    schedule 06.03.2015    source источник


Ответы (1)


Я не проверял ваш запрос, но я бы предложил указывать имена и значения столбцов с помощью API Joomla следующим образом:

function getExistingArticles()
{
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);

    $query->select($db->quoteName(array('a.*')))
          ->from($db->quoteName('#__categories', 'a'))
          ->where($db->quoteName('a.created_by_alias') . ' = ' . $db->quote('article_synchronizer')); // Quoted query.

    $db->setQuery($query);
    $articles = $db->loadObjectList();

    return $articles;
}

Я немного исправил ваш запрос. Вы использовали 3 символа подчеркивания при определении префикса таблицы (следует использовать только 2). Предложения where и from также были неправильными.

person Lodder    schedule 06.03.2015
comment
Теперь выглядит намного лучше! Мне нужно было добавить закрывающую скобку (также отредактировал ваш пост, но в процессе рецензирования). Я использовал ваши изменения, но в результате все равно получаю пустую страницу. - person Allinternal; 06.03.2015
comment
Одобрено ваше изменение. Пустая страница может быть связана с тем, где вы поместили свою функцию и/или как вы ее вызываете. Можете ли вы отредактировать свой вопрос, чтобы показать, где вы размещаете свою функцию и где/как вы ее вызываете? - person Lodder; 06.03.2015