Eloquent (Laravel4) и Nested-sets (Cartalyst) - как получить все статьи от всех потомков?

Я новичок в Laravel 4 и некоторых концепциях, которые он использует, так что не беспокойтесь ... Я разрабатываю интернет-магазин, и у меня проблема с получением всех статей от всех потомков в моем дереве каталогов.

Моя древовидная структура хранится в таблице каталогов с использованием вложенных наборов (Cartalyst):

Category 1
--Sub-category 1.1
----Sub-category 1.1.1
----Sub-category 1.1.2
--Sub-category 1.2
Category 2...

Затем у меня есть таблица статей и сводная таблица article_catalogue. Поэтому я соединил подкатегорию 1.1.1 с 2 статьями, а подкатегорию 1.1.2 - с 3 статьями, используя сводную таблицу. Теперь в своих моделях я определил отношение «многие-многие», чтобы использовать Eloquent ORM.

Теперь возникает моя проблема: когда пользователь нажимает на подкатегорию 1.1 или даже на категорию 1, я хотел бы показать все статьи в выбранном узле (если есть) и от всех потомков выбранного узла дерева, исключая дубликаты, и иметь подкачку .

Я знаю, что могу объединить статьи со всеми узлами сводной таблицы, но есть ли способ сделать это, как описано, с использованием Eloquent и вложенных наборов от Cartalyst?

Я открыт для альтернативных решений / предложений ...


person ObSeSSeN    schedule 07.06.2013    source источник


Ответы (1)


В итоге я использовал построитель запросов, и он работает с этим:

$articles = DB::table('articles')
->join('article_catalog', 'article_catalog.article_id', '=', 'articles.id')
->join('catalogs', 'catalogs.id', '=', 'article_catalog.catalog_id')
->whereBetween('catalogs.lft', array($activeItem->lft, $activeItem->rgt))
->select('articles.*')->paginate(9);

Спасибо crynobone за вашу помощь в чате Laravel IRC! Если кто-то предложит лучшее решение, дайте мне знать! :)

person ObSeSSeN    schedule 08.06.2013