Laravel中的雄辩关系很多人通过

时间:2017-03-13 16:58:28

标签: php laravel orm eloquent relationship

我的Laravel项目有三个课程:城市公司活动。因此,City有很多公司,而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 个答案:

答案 0 :(得分:1)

您可以使用nested eager loading

加载所有公司和活动的城市模型
City::with('companies.activities')->find($cityId);

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

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