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

Laravel查询生成器问题删除空值,laravel,eloquent,builder,Laravel,Eloquent,Builder,大家好,你们这些聪明的人,我和其他人在这里碰壁了,我正试图解决一个问题 问题是,当这个查询生成器获得所有结果时,似乎有一些返回空值,我不确定如何在对数据分页之前删除它们,如果它是一个集合,我知道该如何做,但也许你们中的一些人可以帮我 因此,目前的逻辑进入这个分页 $return = $tld->paginate($request->get('limit'))->toArray(); $tld是雄辩的建设者 然后将其发送到创建的函数中 $return = $this->m

大家好,你们这些聪明的人,我和其他人在这里碰壁了,我正试图解决一个问题

问题是,当这个查询生成器获得所有结果时,似乎有一些返回空值,我不确定如何在对数据分页之前删除它们,如果它是一个集合,我知道该如何做,但也许你们中的一些人可以帮我

因此,目前的逻辑进入这个分页

$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
            ]
        ];
    }
但是我得到了这样一个带有空值的响应,我想在任何分页发生之前删除它们

 {
    "data": {
        "items": [
            {
                "id": 13771,               
            },
            null,
            {
                "id": 4125,                
            },
旁注如果我运行$tld->get(),我可以看到所有结果,其中有空值,因此如果有人可以告诉我如何删除空值,这将是一个很大的帮助get()->filter();这也没有删除空值,我仍然得到这个响应

[
    {
        "id": 13771,
    },
    null,
        {
        "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, $page = null, $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);
}

谢谢您的回复我也尝试过了,但仍然得到了空值。好的,我已经更新了我的答案,如果它不起作用,请将您的表架构发送给我。调用undefined method Illumb\Database\Eloquent\Builder::filter()I thing$tld=$query->get();你不见了$tld=$query->get();