我正在尝试创建一个通用的success
方法来解析我的查询并自动设置一些响应数据。
$items = Item::query()
->where('blah', $req->('blah_filter')
->orderBy('name', 'desc')
->paginate();
return success($items, 'yay, some results');
到目前为止,一切正常,
但是,我还要返回使用的“订单”。有什么方法可以从paginate
或get
集合中嗅出?订单清单?
编辑:按顺序,我的意思是来自orderBy
不相关的模型。
例如,对于Paginator集合,我们可以返回:
return [
'total' => $items->total(),
'per_page' => $items->perPage(),
'current_page' => $items->currentPage(),
'items' => $items->items()
];
BUT似乎无法获得查询中使用的顺序:
return [
'order' => $items->someCallHere()
];
// trying to return something like this:
[
'order' => [
'by' => 'name',
'direction' => 'desc'
]
]
答案 0 :(得分:1)
您需要稍微更改您的代码。
从最后开始删除paginate()
,因为您首先要获取订单。
之后添加它以获取items
。
$items = Item::query()
->where('blah', $req->('blah_filter')
->orderBy('name', 'desc');
// in order to get the ordering used you can use:
$ordering = $items->getQuery()->orders;
// do something with $ordering
// this will be an array like this:
/**
array:1 [▼
0 => array:2 [▼
"column" => "created_at"
"direction" => "desc"
]
]
*/
return success($items->paginate(), 'yay, some results');