Laravel5.7 在使用预加载的时候,如何筛选出预加载为null的数据

问题描述:
在使用查询的时候,通过预加载去关联了一张表,然后分页查询出来,伪代码如下:

$cur_page = $params['cur_page'] ?? 1;
$page_size = $params['page_size'] ?? 20;

$offset = ($cur_page- 1) * $page_size;
$limit = $page_size;

$testQuery = TestModel::query();
$testQuery->select('id', 'name', 'pid');
$testQuery->with('getPidInfo:id,name');
$testQuery->offset($offset)->limit($limit);
$testList = $testQuery->get()->toArray();

在TestModel 声明的关联方法:

 public function getPidInfo()
    {
        $instance = new TestPidModel();
        $query = $instance->newQuery();
        return new BelongsTo($query, $this, 'pid', 'pid', null);
    }

然后查询出来的数据会有get_pid_info 的字段,如果在该关联表没有数据就会显示为null,那么如何在分页之前就筛选出为null或者不为null的数据。

喜欢悠闲独自在
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

whereHas('getPidInfo')

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!