Laravel 多对多中的雄辩关系通过

Posted

技术标签:

【中文标题】Laravel 多对多中的雄辩关系通过【英文标题】:Eloquent Relationship in Laravel ManytoMany Through 【发布时间】:2017-08-03 19:15:21 【问题描述】:

我的 Laravel 项目中有三个类:CityCompanyactivity。所以,City 有很多 Company,而 Comapany 属于一个城市;然后我知道该公司可能有一项或多项活动;我要问的是我怎样才能在一个城市进行所有活动。

城市模型:

public function companies()
    
        return $this->hasMany('App\Models\Company');
    

公司模式:

public function city()
    
        return $this->belongsTo('App\Models\City');
    

public function activities()
    
        return $this->belongsToMany('App\Models\Activity');
    

活动模型:

public function companies()
    
        return $this->belongsToMany('App\Models\Company');
    

感谢一切。 最好的问候。

【问题讨论】:

【参考方案1】:

您可以使用nested eager loading 加载包含所有公司和活动的城市模型:

City::with('companies.activities')->find($cityId);

如果您只想加载活动,可以使用whereHas() 方法:

Activity::whereHas('companies', function($q) use($cityId) 
    $q->where('city_id', $cityId);
)->get();

【讨论】:

以上是关于Laravel 多对多中的雄辩关系通过的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 雄辩的关系 - 多对多 - 获取中间表列

两个多对多相关表之间的Laravel雄辩关系

如何通过多对多关系获取与同一张表相关的行 - Laravel

Laravel:如何在多态多对多中使用 wherePivot

Laravel 和雄辩的返回结果来自多对多关系

如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系