2013-12-02 2 views
0

У меня есть следующий SQL схему:Yii: Продукты с категориями и категориями MANY_MANY могут иметь или не иметь родителя. Получить все продукты

tbl_products: - идентификатор - id_category

tbl_categories: - ID - id_parent

tbl_products_categories: - id_product - id_category

Мой вопрос: В моей категории модели, какое отношение я должен объявить, чтобы получить все продукты этой категории и от ее детей? Могу ли я получить все продукты из отношения или мне придется сделать метод для цикла для каждой дочерней категории, а затем объединить все продукты и вернуть их?

У кого-нибудь есть идеи?

ответ

0

Вложенные отношения, например, между категориями или пунктами меню, как правило, сложны. Случай немного проще, если у вас есть ограничения, такие как максимальное количество детей. В этом случае критерии вашего продукта будут содержать столько объединений, сколько у вас есть возможные отношения (я бы не использовал реляционную активную запись Yii в этом случае, будет ли это слишком сложно на мой взгляд).

В противном случае, да, ваша лучшая ставка состоит в том, чтобы циклически перебирать каждую взаимосвязь и возвращать объединенный массив. ПРИМЕЧАНИЕ. Это может быть невероятно интенсивным, поэтому вы, вероятно, захотите сделать какое-то кэширование на страницах, где это действие выполняется.

0

Поскольку от многих до многих, каждый продукт может быть связан с текущими желаемыми детьми и всеми его родителями, поэтому при запросе родителя все дочерние продукты также будут родительскими.

Смежные вопросы