Joomla 2.5获取所有子类别的ID并在查询中进行子选择

时间:2013-03-29 17:21:17

标签: templates joomla subquery

我用两个坚硬的坚果绞尽脑汁。 因此将问题联系在一起我将它们发布在一个帖子中。不幸的是,我无法提供测试示例。我们走了......

我在Joomla 2.5模板中使用以下查询:

->select(array('a.description','a.display_name','a.parent_id','a.filename','a.url', 'b.title','b.alias', 'b.id','b.catid','b.state','c.title as catTitle','c.parent_id as catparent'))
->from('#__attachments AS a')
->join('LEFT', '#__content AS b ON (a.parent_id = b.id)')
->join('INNER', '#__categories AS c ON b.catid = c.id')
->where("b.state = 1 AND c.parent_id in (23)");  

这将模块表“#_ 附件”与“# _content”和“#_articles”连接起来。目标是获取文章的附加图像,文章标题,别名,文章ID,类别标题,类别ID,......

我的问题

  1. 该查询为我提供了该文章中类别的父类别('c.parent_id as catparent')的ID。是否有可能有一个subselect,它也给我这个父类别的标题(id是catparent)?

  2. 因此我只想要来自特殊子类别的文章,我在其中有一个“in”n。知道所有子类别都是父类别的孩子,ID为(5)。如何从cat 5中获取子类别的所有Id。所以我可以在我的“b.state = 1 AND c.parent_id in($ allSubCategoryIDs)”where子句中使用此Id?

  3. 亲切的问候,

1 个答案:

答案 0 :(得分:2)

广告1。

要获取父类别的标题,请添加

->select('parent.title AS parentTitle')
->join('left', '#__categories AS parent ON parent.id=c.parent_id')

查询。

ad 2。

由于Joomla将类别存储为嵌套集,因此可以通过更改

来实现
->where("b.state = 1 AND c.parent_id in (23)");  

->where('b.state=1')
->where('c.lft BETWEEN parent.lft AND parent.rgt')