我有表格:国家、城市、地区和工作机会。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,因为我想测试这段代码。