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

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

<$tastr$> posts id title likes category_id <-tastr->

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

`<?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); } } ?>`

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

<$tastr$> cities id name population country_id <-tastr->
<$tastr$> countries id name <-tastr->

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

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

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

← →
↑