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的数据。

喜欢悠闲独自在
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

whereHas('getPidInfo')

4年前 评论

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