Сделал на пыхе через рекурсию, т.к на языке запросов еще рука не набита. Есть замечания? $list_categories массив объектов всех категорий.
PHP:
скопировать код в буфер обмена
function getParentId($id)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('parent_id');
$query->from($db->quoteName('#__categories'));
$query->where($db->quoteName('id') . ' = ' . $id);
$db->setQuery($query);
$result = $db->loadResult();
if (!(int)$result) {
$query->clear();
return $id;
}
return getParentId($result);
}
foreach ($list_categories as $key => $value) {
if ((int)$value->parent_id) {
$par_id = getParentId($value->id);
$query = $db->getQuery(true);
$query->update($db->quoteName('#__categories'))
->set($db->quoteName('closest_id') . ' = ' . $par_id)
->where($db->quoteName('id') . ' = ' . $value->id);
$db->setQuery($query);
$db->query();
$query->clear();
}
}