我有一个 cakephp 3.x 查询对象,带有两个嵌套关联 ,Organizations.Positions.Skills它被设置为视图变量 $Organizations。我试图按第一个嵌套关联中的列对查询生成的顶级数组进行排序。也就是说,我想$Organizations按 中的列排序Positions,特别是Positions.Ended)。
public function index()
{
$this->loadModel('Organizations');
$this->set('Organizations',
$this->Organizations->find('all')
->contain([ //eager loading
'Positions.Skills'
])
);
}
Run Code Online (Sandbox Code Playgroud)
组织有很多职位
职位有很多技能
根据说明书, find() 有一个顺序选项:find()->order(['field']);或find('all', ['order'=>'field DESC']);
但是,这仅适用于调用 find() 的表中的字段。在这种情况下,组织。例如,这就是它的典型使用方式。
//This works.
//Sorts Organizations by the name of the organization in DESC.
$this->loadModel('Organizations');
$this->set('Organizations',
$this->Organizations->find('all')
->contain([ //eager loading
'Positions.Skills'
])
->order(['organization DESC'])
);
Run Code Online (Sandbox Code Playgroud)
但是,尝试将它用于嵌套关联是行不通的:
$this->set('Organizations',
this->Organizations->find(...)
->contain(...)
->order(['Organizations.Positions.ended …Run Code Online (Sandbox Code Playgroud)