Я недавно делал, стал изобретать велосипед и наверное кривенько, но написал что-то вроде
Код:
public static function hierarchy_out($id)
{
$category = ORM::factory('category')
->where('id', '=', $id)
->find();
if($category->loaded())
{
self::$category_out_arr[self::$i]['name'] = $category->name;
self::$category_out_arr[self::$i]['alt_name'] = $category->alt_name;
self::$i ++;
self::hierarchy_out($category->parent_id);
}
krsort(self::$category_out_arr);
return self::$category_out_arr;
}
Вызываем в контроллере:
Код:
$category_arr = Model_Category::hierarchy_out($article->category_id);
$categories = '';
$url = '';
foreach($category_arr as $category)
{
$categories .= HTML::anchor($url . $category['alt_name'], $category['name'], array('title' => $category['name'], 'class' => 'url')) . ' - ';
$url .= $category['alt_name'] . '/';
}
$categories = rtrim($categories, ' - ');
Получаем:
Хотя конечно плохо, что это фактически запрос в цикле, хоть и мелкий.