这是我的数据库设计,或者至少是与此问题相关的表格。
我想构建一个返回单个页面的查询(find将基于path
属性),带有关联的容器,其关联的子容器采用线程形式,所有这些容器都应单独将它们与它们相关联的块(最好按照从blocks_pages表中的index
列排序的正确顺序)。
任何人都可以告诉我如何用查询构建器包装所有内容吗?或者,如果这是不可能的,那么是否可以使用新的map / reduce功能来实现,因为已经删除了后找功能?
如果它有帮助,这将是可视化的结果,如果你暂时忽略洋红色的条款框。
答案 0 :(得分:2)
试试这个
$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'
])