Условие ORDER не работает в режиме CakePHP 3 TREE - PullRequest
0 голосов
/ 12 июня 2018

Я использую поведение дерева cakephp-3 для таблицы категорий.Здесь поле sequence_no используется для сортировки списка подкатегорий для категории.Я ищу по category_id, чтобы получить все его дочерние категории в порядке ASCENDING по 'sequence_no'.Но порядок здесь не работает.Мой фрагмент кода и вывод здесь.

 $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 голосов
/ 12 июня 2018

Поскольку findChildred finder добавляет к вашему запросу предложение ORDER lft asc, к нему будут добавлены условия вашего заказа

Если вы хотите форсировать свой заказ, вы можете сделать

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

в секундупараметр в методе order() указывает торту перезаписать значение ORDER BY, установленное перед

, см. руководство, о конце этого абзаца

...