НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗pplrPmMRCOTM 131 of 194 menu

Условия в связи один ко многим в 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 тысяч.

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

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить