【发布时间】:2016-03-08 06:44:22
【问题描述】:
模型 Messages 和 Files 属于 Conversations。 Messages 和 Files 都有一个已创建的 DATETIME 字段。
我想选择属于特定对话的所有消息和文件,并根据创建日期将它们放入同一个提要中。
怎么做?
这是我尝试过的。
//Get us a conversation with all Files and Messages
$conversations = $this->Users->Conversations->find();
$conversations->contain([
'Files' => function ($q)
{
return $q->order('Files.created ASC');
},
'Messages' => function ($q)
{
return $q->order('Messages.created ASC');
},
'Messages.Users',
]);
$conversations->where(['Conversations.id' => $conversationID]);
//Now we want to sort the files an messages according to created date
$converted = $conversations->toArray();
$allEntities = array_merge($converted[0]['files'],$converted[0]['messages']);
$allEntities = Hash::sort($allEntities,'{n}.created','asc');
这在任何不是时间对象的字段上都像一个魅力,例如 id。
我已经阅读了这个问题Combining lists of data from Multiple Models and sort them by date created in cakephp
但由于 cakephp 3 将日期时间转换为时间对象,我无法让 Hash::sort 工作。
如果可以以某种方式关闭时间对象,则可能是一种方法。这对我来说主要是让事情变得更麻烦。
有什么建议吗?
【问题讨论】:
标签: sorting cakephp cakephp-3.x