【问题标题】:Typo3 Extbase backend module - Count records in child-tableTypo3 Extbase 后端模块 - 计算子表中的记录
【发布时间】:2018-08-14 06:26:31
【问题描述】:

我有一个连接了两个表的数据模型(使用 Extension Builder 创建)。

表 A 包含博客文章,表 B 包含各个文章的 cmets。

表 B 以 n:1 关系连接到表 A。

现在我想要一个博客文章列表,其中显示每篇文章的 cmets 数量。

通过常规查询,我只需将表 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 的查询对象来做到这一点。

【问题讨论】:

    标签: extbase typo3-8.x


    【解决方案1】:

    首先,在您的控制器中,您需要获取博客文章并将它们传递给您的模板:

    /**
     * @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>
    

    【讨论】:

    • 非常感谢,迈克尔。我的问题是,我以错误的方式建立了关系。我有从 tableB 到 tableA 的关系,而不是相反。您的回答很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    相关资源
    最近更新 更多