【问题标题】:YII - Sort a dataProvider with an arrayYII - 使用数组对 dataProvider 进行排序
【发布时间】:2013-10-26 13:52:21
【问题描述】:

我有一个这样的数组:

Array
(
    [54995] => Array
        (
            [id] => 54995
            [create_time] => 2012-02-02 20:09:00
        )
    [57349] => Array
        (
            [id] => 57349
            [create_time] => 2012-02-09 23:26:00
        )
    [63565] => Array
        (
            [id] => 63565
            [create_time] => 2013-10-26 15:55:30
        )
    [63566] => Array
        (
            [id] => 63566
            [create_time] => 2013-10-26 15:56:32
        )
)

还有一个按 id 排序的 dataProvider。

我将使用这个数组的 create_time 对 dataProvider 进行排序。

数组 ids 与 dataProvider 中的帖子 id 相等。

我可以这样做吗?

编辑:

我有 LinkTag 模型。我使用 dataProvider 作为链接,但创建时间存储在标签表中。

标签字段:

  • 身份证
  • 标题
  • link_id
  • 创建时间

链接字段:

  • 身份证
  • 标题

链接数据提供者生成器:

$pCriteria = new CDbCriteria();
$pCriteria->condition = 'status=:p1';
$pCriteria->params = array(':p1' => Lookup::STATUS_PUBLISHED_ALL);
$pCriteria->addInCondition('id', $pishnahadIds);
$pLinks = Link::model()->findAll($pCriteria);

由于某些原因,我没有任何关系。

【问题讨论】:

  • 你能提供你用来生成dataprovider的代码吗,这可能很简单,就像在你的dataprovider中添加一个条件
  • @JonPaulH 谢谢,我添加了更多信息

标签: php arrays sorting yii


【解决方案1】:

如果我正确理解您的问题,您是否希望返回的数据按 create_time 而不是 id 排序? 为此,只需使用CDbCriteria order property

$pCriteria = new CDbCriteria();
// ...
$pCriteria->with = array('tag'); // Only works with properly setup relationships, otherwise use $pCriteria->join = '...';
$pCriteria->order = 'tag.create_time ASC'; // or DESC, whatever you need
$pLinks = Link::model()->findAll($pCriteria);

要修复关系信息,您需要在每个模型中指定关系。看看this。这应该希望能给你一些指示。简而言之,每个模型都有一个 relations() 函数,该函数返回一个数组,描述它与其他模型的关系。

编辑

显然我的方法是错误的……您能否稍微澄清一下您对问题的描述,骑士?现在我认为您希望Link::model()->findAll() 操作的结果按create_time 排序。还有顶部的原始数组是从哪里来的?

编辑 2

好的,所以链接和标签共享 1:1 的关系,您希望链接输出按相应标签的创建时间排序?您描述的阵列是否必须手动创建?您是否需要在建议的链接排序之外使用它?

【讨论】:

  • 参加标题和描述老兄
  • 数组的id在链接表中,创建时间在标签表中。我手动创建数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 2012-11-14
相关资源
最近更新 更多