0

我是 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 时,我想显示所选节点中的所有文章(如果有)以及所选树节点的所有后代,不包括重复项并进行分页.

我知道我可以将文章与数据透视表中的所有节点配对,但是有什么方法可以按照使用 Cartalyst 的 Eloquent 和嵌套集的描述来做到这一点?

我对替代解决方案/建议持开放态度......

4

1 回答 1

0

我最终使用了查询生成器,它适用于:

$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 聊天室中提供的所有帮助!如果有人提出更好的解决方案,请告诉我!:)

于 2013-06-08T10:11:46.590 回答