Laravel 5表4之间雄辩的关系

时间:2016-02-03 02:15:11

标签: php laravel laravel-5

我有四张桌子,我使用了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和市政名称。

我通常手动左手连接这些表格。

3 个答案:

答案 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();