提问者:小点点

显示该公司提供工作机会的地区和城市


我有表格:国家、城市、地区和工作机会。Mt关系如下所示:国家与地区城市与地区和工作机会我希望显示地区(请记住,该地区和工作机会处于关系中,因此我希望在循环中创建循环,以便显示该地区和城市),但仅当包含工作机会时。看看这个查询

    $regions = Region::where('country_id', $id)->whereHas('jobs', function($query) {
        return $query->whereHas('cities', function($quesry){
            return $quesry->where('active', 1);
        });
    })->orderBy('name', 'asc')->get();

我会展示所有的模特

//Country
    public function regions(){
        return $this->hasMany("App\Regions");
    }
    public function cities(){
        return $this->hasMany("App\City");
    }
//Region
    public function country(){
        return $this->belongsTo('App\Country');
    }
    public function cities(){
        return $this->hasMany('App\City');
    }
    public function jobs(){
        return $this->hasMany('App\Joboffer');
    }
//City
    public function region(){
        return $this->belongsTo('App\Region');
    }
    public function jobs(){
        return $this->hasMany('App\Joboffer');
    }
//Joboffer
    protected $fillable = ['title', 'city_id', 'region_id', 'description', 'phone', 'photo', 'user_id', 'active'];
    public function city(){
        return $this->belongsTo('App\City');
    }
    public function region(){
        return $this->belongsTo('App\Region');
    }
    public function user(){
        return $this->belongsTo('App\User');
    }

我的查询不起作用。它可以正确显示区域,但可以显示该区域的所有城市。不仅是主动提供。我怎样才能解决我的问题?

我的控制器的方法如下所示

public function checkCitiesFromRegion($id){
    $regions = Region::with('cities.jobs')->where('country_id', $id)->whereHas('cities', function($query) {
        $query->whereHas('jobs', function ($quesry) {
            $quesry->where('active', 1);
        });
    })->orderBy('name', 'asc')->get();
    foreach($regions as $region){
        echo $region->name . '<br>';
        foreach($region->cities as $city){
            echo $city->name;
        }
    }
}

我不使用view,因为我想测试这段代码。


共0个答案