首页 > 解决方案 > withCount() 用于多个级别?

问题描述

像你能做的Project::with('events.contacts')你也能做Project::withCount('events.contacts')吗?它似乎不起作用。是否有另一种方法可以找到某个项目的所有事件的联系人总数,其中 project.id = event.project_id 和 event.id = contact.event_id

标签: phplaraveleloquentcounteager-loading

解决方案


您可以使用关系Has Many Through

文档:https ://laravel.com/docs/8.x/eloquent-relationships#has-many-through

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    public function contacts()
    {
        return $this->hasManyThrough(Contact::class, Event::class);
    }
}

然后你可以做

Project::withCount('contacts')->get();

推荐阅读