我很想使用 PHP Lithium 对嵌入式 MongoDB 对象进行排序。我有一个模型“线程”,它看起来几乎像这样:
{
"_id": ObjectId("4f71bf4618b602580f000009"),
"postings": [
{text: "a", upvotes: 15, /*...*/},
{text: "b", upvotes: 23},
{text: "c", upvotes: 16},
{text: "d", upvotes: 42}
],
// bla
}
现在我想根据他们的支持对帖子进行排序。我已经写了一个大致做我想要的方法:
public function postings_sort_by_upvotes($thread) {
$postings = $thread->postings->to('array');
usort($postings, function($a, $b) {
return ($a['upvotes'] > $b['upvotes'] ? 1 : -1);
});
return $postings;
}
这可行,但显然它将帖子作为普通数组返回,而未排序的帖子是一种lithium\data\collection\DocumentArray
类型。
我真的需要处理数组而不是对象,还是有一种方法可以让我在不丢失原始数据类型的情况下对它们进行排序?