Laravel Eloquent:查询多个模型的复杂关系

时间:2015-06-05 11:04:40

标签: php mysql laravel laravel-5

更新:已解决,问题不是很有说服力,在多个模型中使用多个范围非常有效。我的视图中有一个输出,可以查询每个居民的职业,房间和楼层。这导致超过2600个查询约200名居民,这是我的表现下降的原因。我现在使用急切加载通过添加->with(['occupation.room'])来获取第一个查询的所有职业和房间。

我有一个模特,住在房间里的居民。这些房间出租一段时间,这就是我们有桌子职业的原因。此表确定哪个居民居住在哪里。 这是一个可视化:Relationmodel

我的问题是,Eloquent没有有效的方法来确定所有居住在X楼的居民或Y楼的所有居民(参见房屋attr的楼层模型)。

我在Room使用查询范围:

public function scopeHouse($query, $house) {
    return $query->whereHas('floor', function($q) use($house) {
        $q->where('house', $house);
    });
}

关于职业:

public function scopeHouse($query, $house) {
    return $query->whereHas('room', function($q) use($house) {
        $q->house($house);
    });
}

和居民:

public function scopeHouse($query, $house) {
    return $query->whereHas('occupation', function($q) use($house) {
        $q->house($house);
    });
}

这显然效率不高。我可以查询所有职业,然后单独查询房间和居民,但这会破坏雄辩的流畅的api。

有什么建议吗?

0 个答案:

没有答案