CAKEPHP3查询生成器按嵌套关系排序

CAKEPHP3查询生成器按嵌套关系排序,cakephp,orm,query-builder,cakephp-3.x,Cakephp,Orm,Query Builder,Cakephp 3.x,order函数的文档不够好。这就是我所拥有的: 表A表B表C 所以我有一个表B,它与表a有多对多关系,也与表C有多对多关系 我需要的是表B的项目列表。它们需要按表a的ID进行分组,然后按表C的ID进行分组 这就是我在Table B函数中的内容: $query=$this->find(); $query->contain([ 'MiddleTableAB.TableA'=> function ($q) { retur

order函数的文档不够好。这就是我所拥有的:

表A表B表C

所以我有一个表B,它与表a有多对多关系,也与表C有多对多关系

我需要的是表B的项目列表。它们需要按表a的ID进行分组,然后按表C的ID进行分组

这就是我在Table B函数中的内容:

    $query=$this->find();
    $query->contain([
        'MiddleTableAB.TableA'=> function ($q) {
                return $q->select(['id','name']);
            },
        'MiddleTableBC.TableC'=> [
            'strategy' => 'select',
            'queryBuilder' => function ($q) {
                    return $q->select(['id','name']);
            },
        ]
    ]);
    //$query->select(['id','description']);
    $query->group(['TableA.id','TableC.id']);
    $data = $query->all();
但是蛋糕上说没有表格id。
如果我删除了组调用,我将获得生成所需结果所需的所有数据。我怎样才能做到这一点呢?

很抱歉,我忽略了问题中的Cakephp版本号(即3)。请查找我的编辑内容,如下所示:

对于Cakephp 3中的多个连接,请检查文档

检查以下示例代码:

$query=$countries->find()
->水合物(假)
->加入([
“城市”=>[
“表”=>“城市”,
'类型'=>'左',
“条件”=>“Country.id=City.Country\u id”
],
“地址”=>[
'表'=>'地址',
'类型'=>'左',
“条件”=>“City.id=地址.City\u id”
]
])

->顺序(['state'=>'DESC'])很抱歉,我忽略了问题中的Cakephp版本号(即3)。请查找我的编辑内容,如下所示:

对于Cakephp 3中的多个连接,请检查文档

检查以下示例代码:

$query=$countries->find()
->水合物(假)
->加入([
“城市”=>[
“表”=>“城市”,
'类型'=>'左',
“条件”=>“Country.id=City.Country\u id”
],
“地址”=>[
'表'=>'地址',
'类型'=>'左',
“条件”=>“City.id=地址.City\u id”
]
])

->顺序(['state'=>'DESC'])此代码对cakephp 2而不是cakephp 3有效。此外,本示例不使用order函数。你能帮我解决我的具体问题吗?谢谢,我很抱歉过度寻找版本号。我相应地修改了答案,检查它是否符合您的需要(Order函数只是查找的另一个嵌套,我将它添加到了答案中)此代码对cakephp 2而不是cakephp 3有效。此外,本示例不使用order函数。你能帮我解决我的具体问题吗?谢谢,我很抱歉过度寻找版本号。我相应地修改了答案,检查它是否符合您的需要(Order函数只是查找的另一个嵌套,我将它添加到了答案中)