Cakephp对二级关联表的字段进行排序



我似乎遇到了一个奇怪的问题。使用Cakephp2,我有3个相关的表,如:

taxon->has genus_id
genus -> has family_id

使用Taxon模型,我可以按预期正确地检索所有数据。现在我想对家庭进行分类。因此,我已手动将联接写入分页数组。如果我添加

'order' => 'Family.family desc'

直接对paginate数组进行排序,排序工作如预期。但只要参数

sort:Family.family/direction:desc

不是url的一部分。一旦这些参数被添加到url,订单部分就会被清空。如何避免这种行为并正确排序结果?

问题似乎是Paginator.validateSort的实现。如果传递了排序参数,则验证排序检查,如果模型传递了字段。此检查仅针对模型和直接(一级)相关的模型,但不针对具有更深嵌套关联的模型。我通过修改validateSort方法解决了这个问题。我添加了一种(不太优雅)的可能性,可以通过后面跟着感叹号的字段,比如"Family.Family!"。即使未通过检查,这些字段也会添加到订单数组中。

问候

Alex

最新更新