我有四张桌子,我使用了Laravel 5.2雄辩的方法
Municipalities
id
name
---------------
Barangays
id
name
municipality_id
----------------
Puroks
id
name
barangay_id
----------------
Households
id
name
purok_id
我在每个模型中也分别附加了hasMany(),belongsTo()关系。
那样:
Municipalities hasMany() Barangays hasMany() Puroks hasMany() Households
和
Households belongsTo() Puroks belongsTo() Barangays belongsTo() Municipalities
我想知道有没有办法得到市政府的名字 通过家庭查询?
像
query = Household->purok->barangay->municipality->name
在一个查询中,我几乎无法查询家庭,purok,barangay和市政名称。
我通常手动左手连接这些表格。
答案 0 :(得分:1)
是的,你可以通过在你的查询中包含联接来获得它,如:
// $data will have all the columns of Households joined with Municipalities..
$data = \DB::table('Households')
->select('Households.*', 'Municipalities.*')
->join('Puroks', 'Households.purok_id', '=', 'Puroks.id')
->join('Barangays', 'Puroks.barangay_id', '=', 'Barangays.id')
->join('Municipalities', 'Barangays.municipality_id', '=', 'Municipalities.id')
->get();
希望这会有所帮助。欢呼声。
答案 1 :(得分:0)
在市政当局与Puroks之间将hasManyThrough关系定义为:
async
,然后将其与Municipalities hasManyThrough() Puroks // public function puroks()
Puroks belongsTo() Municipalities // public function municipalities()
一起从Puroks到Households使用,即可得到结果。
hasMany()
尝试一下,我不确定它是否一定能正常工作,但可能会对您有所帮助。
答案 2 :(得分:0)
是的,你可以得到它
Households::with(['Puroks', 'Puroks.Barangays', 'Puroks.Barangays.Municipalities'])->get()->toArray();