我需要知道用于查询嵌套关系并返回结果的 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 语法的主要内容,如果未能解决你的问题,请参考以下文章