如何解决Laravel查询生成器问题删除空值
问题是,当此查询生成器获得所有结果时,似乎会有一些返回空值,并且我不确定如何在分页数据之前将其删除,如果知道的话,该怎么做是一个收藏,但是也许你们中的一些人可以帮助我。
因此目前逻辑已纳入此分页
$return = $tld->paginate($request->get('limit'))->toArray();
$ tld是雄辩的构建者。
然后将其发送到已创建的此函数中。.
$return = $this->makePagination($return);
public function makePagination($object = [],$filters = []) {
return [
'data' => [
'items' => $object['data'],'pagination' => [
'from' => $object['from'],'to' => $object['to'],'total' => $object['total'],'per_page' => $object['per_page'],'first_page' => [
'number' => 1,'url' => $object['first_page_url']
],'last_page' => [
'number' => $object['last_page'],'url' => $object['last_page_url']
],'next_page' => [
'number' => $object['current_page'] + 1,'url' => $object['next_page_url']
],'prev_page' => [
'number' => $object['current_page'] - 1,'url' => $object['prev_page_url']
]
],'params' => $filters
]
];
}
但是随后我得到一个带有Null值的响应,我想在发生任何分页之前将其删除
{
"data": {
"items": [
{
"id": 13771,},null,{
"id": 4125,
如果我运行$ tld-> get(),请注意,我可以看到所有结果,并且其中有空值,因此,如果有人可以告诉我如何删除空值,这将是一个很大的帮助
更新
我也尝试过$ tld-> get()-> filter();那也没有删除空值,我仍然得到这个响应
[
{
"id": 13771,{
"id": 789,}
]
解决方法
@Bob Hiller 请在查询中使用 whereNotNull 删除空条目。
$tld=$query->get();
$tld->filter(function ($value) { return !is_null($value); });
$return = $tld->paginate($request->get('limit'))->toArray();
,
我想我通过一点修改来解决了
$filtered = collect(array_values(array_filter($tld->get()->toArray())));
return $this->paginate($filtered,$request->get('limit') ?? 15,$page = null,$options = []);
然后创建一个集合分页器
public function paginate($items,$perPage = 15,$options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page,$perPage),$items->count(),$perPage,$page,$options);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。