Получение данных из моделей Eloquent

Получение моделей

По следующей ссылке изучите раздел Получение моделей (до раздела Коллекции). Решите затем следующие задачи:

Сделайте контроллер PostController для работы со статьями.

В контроллере PostController сделайте действие getAll для получения списка всех статей. Пусть это действие будет доступно по адресу /post/all/.

Используя модель Post, созданную в предыдущем уроке для таблицы posts, получите в действии getAll массив всех статей, передайте его в представление и выведите циклом на экран в виде HTML таблицы с колонками id, title (заголовок) и desc (то есть без текста статьи).

Получение одиночных записей

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

<?php $post = Post::find(1); // получаем запись с id 1 ?>

В контроллере PostController сделайте действие getOne для получения одной статьи по ее id. Пусть это действие будет доступно по адресу /post/:id/, где :id представляет собой id желаемой записи.

Не забудьте наложить ограничение регулярным выражением на наш параметр.

В действии getOne из таблицы posts получите статью соответствующую переданному параметру. Передайте полученную статью в представление и выведите ее на экран, оформив соответствующим HTML кодом.

Отредактируйте представление действия getAll так, чтобы заголовок каждой из выводимых статей стал ссылкой на соответствующую страницу одной статьи.

Метод find с массивом

В методе find можно передавать не один id, а сразу группу в виде массива:

<?php $posts = Post::find([1, 2, 3]); ?>

Использование конструктора запросов

Все методы, доступные в конструкторе запросов, также доступны при работе с моделями Eloquent. Вы можете использовать любой из них в запросах Eloquent.

Давайте, например, используем комбинацию из методов where и first:

<?php $post = Post::where('id', 1)->first(); ?>

Отредактируйте действие getAll так, чтобы получаемые статьи были отсортированы по убыванию даты публикации.

Отредактируйте маршрут действия getAll так, чтобы вместо адреса /post/all/ нашей действие стало доступно по адресу /post/all/:order/, где :order представляет собой имя поля, по которому выполнять сортировку.

Сделайте так, чтобы сортировать можно было по полям id, title и date. Причем сортировка должна быть по убыванию значения поля.

Сделайте так, чтобы параметр :order был не обязательным и по умолчанию имел значение date.

Отредактируйте маршрут действия getAll так, чтобы появился еще один параметр :dir, представляющий собой направление сортировки (по убыванию или по возрастанию). То есть наш маршрут станет выглядеть так: /post/all/:order/:dir.

Пусть параметр :dir может иметь только два значения: asc или desc. При этом пусть наш параметр также является не обязательным и по умолчанию имеет значение desc.

Исключения "не найдено"

По следующей ссылке изучите раздел Исключения «не найдено». Решите затем следующие задачи:

Отредактируйте действия getOne так, чтобы, если для переданного параметром id не существует записи в базе данных, то выводилась ошибка 404.