微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel查询生成器问题删除空值

如何解决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 举报,一经查实,本站将立刻删除。