У меня есть в основном следующая таблица:
Категории
id name categories_id_categories
1 Clothes null
2 Shirts 1
3 Pants 1
4 Electronics null
5 Tv 4
В таблице хранятся категории и подкатегории, если значение category_id_categories равно нулю, это основные категории, иначе это подкатегориикатегория с этим идентификатором.Я хочу показать это на странице, поэтому я создал эти функции для моей модели категорий:
public function getAllCategories()
{
$select = $this->select()
->where('categories_id_categories IS NULL');
return $this->fetchAll($select);
}
public function getAllSubCategories()
{
$select = $this->select()
->where('categories_id_categories IS NOT NULL');
return $this->fetchAll($select);
}
И на моем контроллере:
$categories = new Model_DbTable_Categories();
$categoryList = $categories->getAllCategories();
$categoriesAll = array();
foreach ($categoryList->toArray() as $category) {
$subCategories = $categories->getSubCategoriesByCategory($category['id']);
$category['sub_categories'] = $subCategories->toArray();
$categoriesAll[] = $category;
}
$this->view->categoryList = $categoriesAll;
Итак, categoryList - это массив со всеми категориямии ключ sub_categories - это другой массив со всеми подкатегориями.Это работает, но мне было интересно, есть ли способ сделать это, используя объекты вместо массива, и, возможно, используя только один запрос вместо 2?
Если я выберу все из таблицы, я получу категории иподкатегории, но тогда мне придется переместить некоторую логику в представление, чтобы выбрать подкатегории, которым я верю.
Заранее спасибо!