0

我用两个硬坚果绞尽脑汁。因此,这些问题联系在一起,我将它们发布在一个线程中。不幸的是,我无法提供测试示例。来吧……</p>

我在我的 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)");  

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

我的问题

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

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

亲切的问候,

托尼

4

1 回答 1

2

广告 1。

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

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

到您的查询。

广告 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')
于 2013-03-29T22:14:33.193 回答