我有一个这样的数组:
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 排序的数据提供程序。
我将使用此数组的create_time对数据提供程序进行排序。
数组 ID 等于数据提供程序中的帖子 ID。
我可以这样做吗?
编辑:
我有链接和标签模型。我使用数据提供程序进行链接,但创建存储在标签表中的时间。
标记字段:
- 编号
- 标题
- link_id
- create_time
链接字段:
- 编号
- 标题
链接数据提供程序生成器:
$pCriteria = new CDbCriteria();
$pCriteria->condition = 'status=:p1';
$pCriteria->params = array(':p1' => Lookup::STATUS_PUBLISHED_ALL);
$pCriteria->addInCondition('id', $pishnahadIds);
$pLinks = Link::model()->findAll($pCriteria);
由于某些原因,我没有关系。
如果我
正确理解您的问题,您希望返回的数据按create_time而不是 id 排序?为此,只需使用 CDbCriteria order 属性。
$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);
要修复关系信息,您需要在每个模型中指定关系。看看这个。希望这能给你一些指示。简而言之,每个模型都有一个relations()
函数,该函数返回一个数组,描述它与其他模型的关系。
编辑
显然我的做法是错误的...查利斯特,你能澄清一下你的问题的描述吗?现在我认为您希望按create_time
对Link::model()->findAll()
操作的结果进行排序。还有顶部的原始阵列从何而来?
编辑 2
好的,那么链接和标签共享 1:1 关系,您希望链接输出按相应标签的创建时间排序?您描述的数组是否必须手动创建?您是否需要在建议的链接排序之外使用它?