# Условия в связи один ко многим в Laravel

Можно добавлять дополнительные условия при получении связанных данных. Давайте посмотрим, как это делается. Пусть у нашей таблицы с постами будет также и поле `likes`, содержащее количество лайков:

#### posts

- id
- title
- likes
- category_id

Давайте для начала получим категорию вместе с коллекцией ее постов:

`<?php class CategoryController extends Controller { public function show() { $posts = Category::find(1)->posts; dump($posts); } } ?>`

Теперь заменим свойство `posts` на метод `posts()`. В этом случае метод своим результатом вернет построитель запросов:

`<?php class CategoryController extends Controller { public function show() { $qb = Category::find(1)->posts(); dump($qb); } } ?>`

Так как возвращается построитель запросов, то мы можем дальше продолжить цепочку, к примеру, наложив некоторое условие на получаемые посты:

`<?php class CategoryController extends Controller { public function show() { $posts = Category::find(1) ->posts() ->where('likes', '>', 10) ->get(); dump($posts); } } ?>`

Сделайте следующие таблицы:

#### cities

- id
- name
- population
- country_id

#### countries

- id
- name

Свяжите таблицу `countries` с таблицей `cities` отношением `hasMany`.

Получите все страны вместе с их городами, население в которых больше `100` тысяч.

Получите все страны вместе с их городами. Города каждой страны отсортируйте по возрастанию населения.

←→
↑