Красноречивое предложение where на основе других таблиц - PullRequest
0 голосов
/ 29 июня 2019

Одна из моих моделей 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 в Стране свойств,так что я могу выбрать свойства, где страна = 5 (например).

Ответы [ 2 ]

1 голос
/ 30 июня 2019

Вы можете использовать объединения в сочетании с методом where.Например:

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();
0 голосов
/ 30 июня 2019

Вы можете использовать метод построения запросов whereHas, который выполняет запросы к отношениям. Я переименовал ваши модели в Property и Country для этого примера. Это также предполагает наличие связи между странами.

Property::whereHas('country', function ($query) {
    $query->where('id', 5);
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...