Laravel 多对多中的雄辩关系通过
Posted
技术标签:
【中文标题】Laravel 多对多中的雄辩关系通过【英文标题】:Eloquent Relationship in Laravel ManytoMany Through 【发布时间】:2017-08-03 19:15:21 【问题描述】:我的 Laravel 项目中有三个类:City、Company 和 activity。所以,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