雄辩的(Laravel4)和嵌套集(Cartalyst) -如何从所有后代获得所有文章



我是Laravel 4的新手,它使用了一些概念,所以请放心。我正在开发一个网络商店,我有一个问题,从所有后裔在我的目录树的所有文章。

我的树结构使用嵌套集(catalyst)存储在目录表中:

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

然后我有一个文章表和一个数据透视表article_catalog。所以我配对子类别1.1.1与2篇文章和子类别1.1.2与3篇文章使用透视表。现在在我的模型中,我定义了多对多关系,这样我就可以使用Eloquent ORM了。

现在我的问题来了,当用户单击子类别1.1甚至类别1时,我想显示所选节点中的所有文章(如果有的话)和所选树节点的所有后代,不包括重复和分页。

我知道我可以将文章与数据透视表中的所有节点配对,但是是否有任何方法可以像使用Cartalyst的Eloquent和嵌套集那样做到这一点?

我愿意接受其他的解决方案/建议…

我最终使用查询生成器,它与此一起工作:

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

最新更新