我正在用 Symfony2 和 Doctrine2 构建一个小型网站。有博客文章、活动和新闻稿。它们中的每一个都非常相似,因此我决定将单表继承 (STI) 与称为“节点”的父表一起使用。
节点有:
- 一个“已发布”字段,它是布尔值
- 一个“语言环境”字段,它是一个字符串,表示“这只在这个语言环境中显示”。(语言环境是通过请求传入的)。
默认情况下,我只想显示来自当前语言环境的已发布节点。
显然,我可以在存储库中创建许多查询,如下所示:
$this->createQueryBuilder('Event')
->where('Node.published = 1')
->where('Node.locale = :locale')
但这似乎不是很干燥。
那么如何构建一个默认查询,其他查询可以从中“继承”呢?这应该包括基于关系的默认 Doctrine 查询。