这是我的数据库设计,或者至少是与此问题相关的表.
我想构建一个返回单个页面的查询(find将基于path属性),以及相关的容器,其关联的子容器采用线程形式,并且所有这些容器都应单独使用它们的关联块(最好按照从blocks_pages表的索引列排序的正确顺序).
任何人都可以告诉我如何用查询构建器包装所有内容吗?或者如果那是不可能的,那么是否可以使用新的map / reduce功能来实现,因为已经删除了after-find功能?
如果它有帮助,这将是可视化的结果,如果您暂时忽略洋红色的条款框.
最佳答案 试试这个
$pagesTable
->find()
->where(['path' => $myPath])
->contain([
'Containers.ChildContainers' => function($q) {
return $q->formatResults(function($results) {
return $results->map(function($container) {
$container->nested = $container->source()
->find('children', ['for' => $container->id])
->find('threaded')
->contain(['Blocks']);
return $container;
});
});
},
'Containers.ChildContainers.Blocks'
])