Я создаю статьи в 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! статья с определенным содержанием уже существует?
Я не проверял ваш запрос, но я бы предложил заключить в кавычки имена и значения столбцов с помощью 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
пункты были также неправильным способом.
Других решений пока нет …