对不起,也许是愚蠢的问题,但是我对排序结果有疑问,我只想按updated_at->数据的降序对结果进行排序,所以最新的记录排在最前
public function boostsRequest()
{
$boosts = Cache::remember('boosts_all', 30, function () {
$raw = Boost::where('status', 3)->where('hidden', false)->with('screenshot')->get();
$raw->transform(function ($boost) {
return [
'currentdivision' => $boost->currentdivision,
'desireddivision' => $boost->desireddivision,
'wins' => $boost->wins,
'type' => $boost->type,
'screenshot' => optional($boost->screenshot)->url,
'updated_at' => $boost->updated_at,
];
});
$raw = $raw->sortBy(function ($boost) {
return strtotime($boost->updated_at->date);
});
return $raw;
});
return $boosts;
}
通常,函数调用的结果是一个JSON表,其中填充了具有以下结构的对象:
{"currentdivision":"12","desireddivision":"16","wins":null,"type":"division","screenshot":"https:\/\/ucarecdn.com\/86c6d345-1a7f-4af4-8005-175ee235ccd8\/","updated_at":{"date":"2016-11-03 11:11:26.000000","timezone_type":3,"timezone":"UTC"}}
我想要一个按字段updated_at-> date
排序的对象表,降序排列,因此最近更新的对象为第一个
答案 0 :(得分:0)
updated_at值不是对象,只需删除->date
部分,只需此代码。
return strtotime($boost->updated_at);
提示:有时,当我们怀疑值的表示方式或php函数在表记录上的行为时,可以使用tinker:D。
答案 1 :(得分:0)
只需在雄辩的请求中按更新时间对集合进行排序:
$raw = Boost::where('status', 3)->where('hidden', false)->with('screenshot')->orderBy('updated_at')->get();
在updated_at
值中,您确定它存在于数据库中。无需关闭。