ORDER条件不适用于cakephp 3 TREE行为

时间:2018-06-12 09:10:37

标签: cakephp-3.0

我在Categories表中使用cakephp-3树行为。这里'sequence_no'字段用于排序类别的子类别列表。我正在使用category_id搜索以'sequence_no'的ASCENDING顺序获取他所有的子类别。但命令不在这里工作。我的代码片段和输出在这里。

 $categoris = $this->Categories->find('children', ['for' => $id])
            ->find('threaded')
            ->contain('ParentCategories')
            ->order(['Categories.sequence_no' => 'ASC'])
            ->toArray();

- 输出样本:

{
"status": "OK",
"result": {
    "data": [
        {
            "id": 15,
            "store_id": 0,
            "uuid": null,
            "name": "cat-3",
            "parent_id": 3,
            "lft": 16,
            "rght": 17,
            "sequence_no": 2,
            "url": "cat-3",
            "layout_id": 0,
            "status": 1,
            "total": 0,
            "created": "2018-06-12T07:36:15+00:00",
            "modified": "2018-06-12T08:15:12+00:00",
            "parent_category": {
                "id": 3,
                "store_id": 2,
                "uuid": null,
                "name": "Pants",
                "parent_id": null,
                "lft": 15,
                "rght": 20,
                "sequence_no": null,
                "url": "pants",
                "layout_id": 0,
                "status": 1,
                "total": 0,
                "created": "2018-06-06T10:23:50+00:00",
                "modified": "2018-06-06T10:23:50+00:00"
            },
            "children": []
        },
        {
            "id": 16,
            "store_id": 0,
            "uuid": null,
            "name": "cat-4",
            "parent_id": 3,
            "lft": 18,
            "rght": 19,
            "sequence_no": 1,
            "url": "cat-4",
            "layout_id": 0,
            "status": 1,
            "total": 0,
            "created": "2018-06-12T07:36:34+00:00",
            "modified": "2018-06-12T08:15:12+00:00",
            "parent_category": {
                "id": 3,
                "store_id": 2,
                "uuid": null,
                "name": "Pants",
                "parent_id": null,
                "lft": 15,
                "rght": 20,
                "sequence_no": null,
                "url": "pants",
                "layout_id": 0,
                "status": 1,
                "total": 0,
                "created": "2018-06-06T10:23:50+00:00",
                "modified": "2018-06-06T10:23:50+00:00"
            },
            "children": []
        }
    ]
}

}

1 个答案:

答案 0 :(得分:1)

由于findChildred finder在您的查询中添加ORDER lft asc子句,您的订单条件将附加到该

如果您想强制执行订单,可以

->order(['Categories.sequence_no' => 'ASC'], true)

order()方法中的第二个参数告诉cake在

之前覆盖ORDER BY

请参阅手册,了解this

的结尾