我有四个表,我使用了 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、描笼涯和市镇名称。
我通常通过手动左连接这些表来完成。
是的,您可以通过在查询中包含联接来获取它,例如:
// $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();
希望这有帮助。干杯。
将市政当局与 Puroks 的 hasManyThrough 关系定义为:
Municipalities hasManyThrough() Puroks // public function puroks()
Puroks belongsTo() Municipalities // public function municipalities()
然后将其与从 Puroks 到 Households 的
hasMany()
一起使用,您就可以获得结果。
$result = Household::whereHas('puroks', function($query) {
$query->whereHas('municipalities', function($qry) {
$qry->whereNotNull('name');
});
});
试试这个,我不确定它一定会起作用,但它可能对你有帮助。
是的,你可以通过
Households::with(['Puroks', 'Puroks.Barangays', 'Puroks.Barangays.Municipalities'])->get()->toArray();
我可以使用相同的表格结构场景获取城市家庭列表吗?