【问题标题】:CSqlDataProvider yii sorting after manipulating dataCSqlDataProvider yii 操作数据后排序
【发布时间】:2014-04-13 14:15:44
【问题描述】:

我用分页显示来自 CSqlDataProvider 的数据,我想为我的结果添加排序
我的情况是 -
我用

 $dataProvider=new CSqlDataProvider($sqlAll, array(
                'totalItemCount'=>$count,
                '分页'=>数组('pageSize'=>$pageSize,),
                '参数' => $参数
            ));
    
得到结果后,我计算了另外 2 个要显示的字段(不是使用 $sqlAll 查询提取的)并根据它们进行排序
我的问题是:我只得到 $pagesize 数量的结果,发生的情况是排序是每个 $pagesize 结果而不是所有结果。
我可以将计算字段添加到 CSqlDataProvider 或分页吗?

【问题讨论】:

  • 您是否有机会在 SQL 查询中使用限制?因为你应该把它留给数据提供者。
  • 限制由分页和$pagesize完成
  • 好的,那么我建议尝试我的答案的方法 1。尽管它可能会导致复杂的查询。这是最具可扩展性的解决方案。如果您确定您的结果记录集将保持相对较小(或有性能不佳的风险),请仅使用方法 2。
  • 这是一个非常复杂且耗时的查询...
  • 好吧,我想您可以发布有关查询以及如何优化其性能的问题;)也许有一个简单的解决方案或解决方法。或者也许可以应用一些缓存。无论哪种方式,我都必须查看查询(或它的原则)来帮助解决这个问题。除了我给出的问题之外,我没有看到任何真正可行的解决方案(但这可能只是我;)。

标签: php sorting yii


【解决方案1】:

您可以通过以下两种方式之一添加计算字段:

  1. 直接在查询和sort on that中计算两个字段的结果。
  2. 使用 CArrayDataProvider 并用查询结果的关联数组中的数据填充它(使用 DAO 获取此结果),您“手动”向其中添加了两个字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多