我似乎遇到了一个奇怪的问题。使用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