我正在使用laravel 5.6
开发应用。
在我的应用程序中,我有三个表,分别是省,地区,镇,这些模型具有以下关系:
Province
public function districts()
{
return $this->hasMany(District::class);
}
District
public function province()
{
return $this->belongsTo(Province::class);
}
Town
public function district()
{
return $this->belongsTo(District::class);
}
现在我可以在Controller
中使用渴望的Loder来获取数据了:
$town_list = Town::with('district.province')->groupBy('provinceid')->get();
和blade
文件中的下拉选择输入
<div class="form-group">
<label for="exampleFormControlSelect1">Province</label>
<select name="province_id" id="province_id" class="form-control input dynamic" data-dependent="district_id" >
<option value="">Select Province</option>
@foreach($town_list as $town)
<option value="{{$town->provinceid}}">{{$town->provinceid}}</option>
@endforeach
</select>
</div>
现在我可以在我的选择输入中看到省份名称,但是我需要在我的选择输入,表结构中打印省份名称
provinces
id name
1 alabama
2 prodova
districts
id name province_id
1 x 1
2 y 2
towns
id name district_id province_id
1 gh 1 1
2 ju 2 2
答案 0 :(得分:1)
首先,您可以从province_id
表中删除该Town
。镇区为您提供所需的省份ID($town->district->province_id
或$town->district->province->id
)。
此外,要打印省名,您可以链接您的关系。如前所述,您可以使用$town->district->province->name
来获取它。
<option value="{{$town->district->province->id}}">{{$town->district->province->name}}</option>