在 CakePHP 中订购 'Contain' 模型 3.x

Order 'Contain' Model in CakePHP 3.x

我在 AnotherThing 中有多个 Things 现在我正尝试在我的 AnotherThing Controller 中的编辑操作中对它们进行排序 - 我可以访问 Things 就好了我的编辑,但我想对它们进行不同的排序(而不是根据它们的 ID),例如 Things.pos

此处的最佳做法是什么?我用

试过了
public $hasMany = array(
        'Thing' => array(
            'order' => 'Thing.pos DESC'
        )
    );

但没有任何改变。有什么想法吗?

过度阅读文档。抱歉!

无论如何,如果有人要寻找答案,请看这里: http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#sorting-contained-associations

编辑:

When loading HasMany and BelongsToMany associations, you can use the sort option to sort the data in those associations:

$query->contain([
    'Comments' => [
        'sort' => ['Comment.created' => 'DESC']
    ]
]);

如果您在关联的 table 中定义了一些自定义查找器方法,则可以在 contain() 中使用它们。对于你的情况,你可以像下面这样解决这个问题:

$query->contain([
        'Comments' => function ($q) {
           return $q->order(['created'=>'DESC']);
        }
    ]);