我需要知道用于查询嵌套关系并返回结果的 Laravel Eloquent 语法

Posted

技术标签:

【中文标题】我需要知道用于查询嵌套关系并返回结果的 Laravel Eloquent 语法【英文标题】:I need to know the Laravel Eloquent syntax for querying the nested relationship and returning the results 【发布时间】:2020-06-07 17:33:29 【问题描述】:

我有以下型号

公司 联系方式 门票 工作 用户

工作属于工单,工单属于联系人或用户(多态),联系人属于公司。我可以使用

检索特定公司的所有工作
Company::with('contacts.tickets.jobs')->where('id', 10)->get();

我想要一个特定公司的系统中所有工作的列表。我尝试了以下方法,但它不起作用,它正在返回所有工作

Job::with(['ticket' => fn($b) => $b->whereHasMorph('creator', [App\Contact::class],fn($b) => $b->where('company_id', 10))])->get();

【问题讨论】:

【参考方案1】:
$companyId = 6;

Job::whereHas('ticket', fn($b) => 
    $b->whereHasMorph('creator', [App\Contact::class], fn($c) => 
        $c->where('company_id', $companyId)
    )
   )->with(['ticket.creator.company'])->get();

【讨论】:

以上是关于我需要知道用于查询嵌套关系并返回结果的 Laravel Eloquent 语法的主要内容,如果未能解决你的问题,请参考以下文章

用于迭代嵌套结果的 Django 查询集预取优化

MongoDB Mongoose 聚合查询深度嵌套数组删除空结果并填充引用

Mybatis从入门到精通系列 15——嵌套查询与嵌套结果

嵌套查询与连接查询的区别是啥

如果子关系在 Laravel 中有结果,我如何只返回父级,如果关系是三重嵌套的?

为啥我的 graphql 嵌套查询返回 null?