Typo3 Extbase 后端模块 - 计算 child-table 中的记录
Typo3 Extbase backend module - Count records in child-table
我有一个连接了两个 table 的数据模型(使用 Extension Builder 创建)。
Table A 包含博客 posts,table B 包含对个人 posts 的评论。
Table B 通过 n:1 关系连接到 table A。
现在我想要一个博客 post 的列表,显示每个 post 的评论数。
对于常规查询,我只需将 table B 与一个计数和一个 group by 语句连接起来。
类似于:
SELECT tableA.*, COUNT(tableB.id) FROM tableA
LEFT JOIN tableB on tableB.foreignKey = tableA.uid
GROUP BY tableB.foreignKey
对于 Extbase 查询,这似乎不起作用。从 tableA 到 tableB 没有任何联系。我该如何实现?
[编辑] 我知道我可以自己编写查询语句。不过,我想使用 T3 的查询对象来完成它。
首先,在您的控制器中,您需要获取博客文章并将它们传递给您的模板:
/**
* @var \Namespace\PostsRepository
* @inject
*/
protected $postsRepository = null;
....
public function listAction () {
$posts = $this->postsRepository->findAll();
$this->view->assign('posts', $posts);
}
然后在您的模板中,您可以这样显示它:
<f:for each="{posts}" as="post">
{post.title} <f:count subject="{post.comments}" />
</f:for>
我有一个连接了两个 table 的数据模型(使用 Extension Builder 创建)。
Table A 包含博客 posts,table B 包含对个人 posts 的评论。
Table B 通过 n:1 关系连接到 table A。
现在我想要一个博客 post 的列表,显示每个 post 的评论数。
对于常规查询,我只需将 table B 与一个计数和一个 group by 语句连接起来。 类似于:
SELECT tableA.*, COUNT(tableB.id) FROM tableA
LEFT JOIN tableB on tableB.foreignKey = tableA.uid
GROUP BY tableB.foreignKey
对于 Extbase 查询,这似乎不起作用。从 tableA 到 tableB 没有任何联系。我该如何实现?
[编辑] 我知道我可以自己编写查询语句。不过,我想使用 T3 的查询对象来完成它。
首先,在您的控制器中,您需要获取博客文章并将它们传递给您的模板:
/**
* @var \Namespace\PostsRepository
* @inject
*/
protected $postsRepository = null;
....
public function listAction () {
$posts = $this->postsRepository->findAll();
$this->view->assign('posts', $posts);
}
然后在您的模板中,您可以这样显示它:
<f:for each="{posts}" as="post">
{post.title} <f:count subject="{post.comments}" />
</f:for>