Получение данных связь один ко многим в Laravel

В предыдущем уроке мы связали категории и их посты отношением hasMany. Давайте теперь в контроллере получим какую-нибудь категорию:

app/Http/Controllers/CategoryController.php<?php
  class CategoryController extends Controller
  {
    public function show()
    {
      $category = Category::find(1);
      dump($category);
    }
  }
?>

Вместе с категорией мы автоматически получим коллекцию постов:

app/Http/Controllers/CategoryController.php<?php
  class CategoryController extends Controller
  {
    public function show()
    {
      $category = Category::find(1);
      dump($category->posts); // коллекция постов
    }
  }
?>

Давайте переберем коллекцию с постами через цикл:

app/Http/Controllers/CategoryController.php<?php
  class CategoryController extends Controller
  {
    public function show()
    {
      $category = Category::find(1);
      
      foreach ($category->posts as $post) {
        dump($post->title);
      }
    }
  }
?>

Давайте теперь получим коллекцию категорий. Переберем ее циклом, для каждой категории получим коллекцию постов и также переберем ее циклом:

app/Http/Controllers/CategoryController.php<?php
  class CategoryController extends Controller
  {
    public function show()
    {
      $categories = Category::all();
      
      foreach ($categories as $category) {
        dump($category->name);
        
        foreach ($category->posts as $post) {
          dump($post->title);
        }
      }
    }
  }
?>
Задание 1

Для таблиц, созданных в предыдущем уроке получите все страны вместе с их городами.

Задание 2

Передайте полученные данные в представление и выведите их в виде следующей верстки:

html<div>
  <h2>country1</h2>
  <ul>
    <li>city11</li>
    <li>city12</li>
    <li>city13</li>
  </ul>
</div>
<div>
  <h2>country2</h2>
  <ul>
    <li>city21</li>
    <li>city22</li>
    <li>city23</li>
  </ul>
</div>
<div>
  <h2>country3</h2>
  <ul>
    <li>city31</li>
    <li>city32</li>
    <li>city33</li>
  </ul>
</div>