雄辩的where子句基于其他表

时间:2019-06-29 20:46:21

标签: laravel laravel-5 eloquent

我的Laravel模型之一称为Property,它包含应用程序中的所有Real Estate属性。每个媒体资源都包含一个城市和国家/地区。

因此,我有以下关系表:

City_property (holds city of properties)

| id | city_id | property_id |
|----|---------|-------------|
| x  | 2       | 1           |

City_country (holds country of city)

| id | country_id | city_id |
|----|------------|---------|
| x  | 3          | 2       |

因此,在获取我所有的属性时,我想要属性国家(地区)上的where子句,因此我只能在country = 5(例如)的地方获取属性。

2 个答案:

答案 0 :(得分:1)

您可以结合使用joinswhere方法。例如:

Property::join('City_property', 'properties.id', '=', 'City_property.id')
  ->join('City_country', 'City_property.city_id' , '=', 'City_country.city_id')
  ->where('City_country.country_id', 5)
  ->get();

答案 1 :(得分:0)

您可以使用查询构建器whereHas方法来对关系执行查询。在此示例中,我将您的模型重命名为“ Property and Country”。这也假定存在国家关系。

Property::whereHas('country', function ($query) {
    $query->where('id', 5);
})->get();