首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果子代在Laravel中没有空值,如何使用whereHas获取记录

如果子代在Laravel中没有空值,如何使用whereHas获取记录
EN

Stack Overflow用户
提问于 2021-07-09 22:00:15
回答 1查看 90关注 0票数 1

我使用的是whereHas,我只想在子查询没有NULL的情况下返回记录

代码语言:javascript
复制
return App\Bill_of_Lading::with('transactions.confirmed_transaction.delivery_order')
    ->whereHas('transactions.confirmed_transaction.delivery_order', function ($query) {
        $query->whereNotNull('date_delivered');
    })->get();

预期结果: NULL (因为存在date_delivered为NULL的交货单)结果:提单与值为NULL的交货单的集合

我也使用了Laravel的" with“,但没有成功

代码语言:javascript
复制
return App\Bill_of_Lading::with(['transactions.confirmed_transaction.delivery_order' => function($query){
        $query->whereNotNull('date_delivered');
    }])->get();

我甚至把whereNotNull包在里面

代码语言:javascript
复制
return App\Bill_of_Lading::with('transactions.confirmed_transaction.delivery_order')
    ->whereHas('transactions.confirmed_transaction.delivery_order', function ($query) {
        $query->where(function($q){
            $q->whereNotNull('date_delivered');
        });
    })->get();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 23:43:36

现在就差不多了,whereHas()为查询条件提供了额外的参数。因此,检查关系是否有空字段,并将其断言为0,因此任何交付顺序列都不能为空。

代码语言:javascript
复制
->whereHas(
    'transactions.confirmed_transaction.delivery_order', function ($query) {
        $query->whereNull('date_delivered');
    },
    '=',
    0
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68318057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档