Laravel 5+ Подсказки при работе с Laravel

Laravel 5+

laravel

Подсказки при работе с Laravel

Автор: Povilas Korop Перевод: itmathrepetitor.ru

Подсказка 1. Invoke-контроллер

Начиная с Laravel 5.6.28 для создания контроллера с одним единственным методом можно использовать __invoke() или создать  специальный invoke-контроллер.

Роут:

Artisan-команда для генерация такого контроллера:

Подсказка 2. Беззнаковое целое

В миграциях при объявлении внешнего ключа используйте unsignedInteger() или integer()->unsigned() вместо integer() во избежание mysql-ошибки.

Подсказка 3. Сортировка в связях Eloquent

Вы можете применить orderBy() прямо в связях Eloquent:

Подсказка 4. Последовательность миграций

Миграции выполняются в алфавитном порядке названий файлов. Поэтому для изменения порядка можно изменить начало названия файла. Например, 2020_08_04_070443_create_posts_table.php выполнится раньше, чем 2020_08_05_0704433_create_invoices_table.php. После переименования 2020_08_05_0704433_create_invoices_table.php в 2020_08_04_000001_create_invoices_table.php порядок выполнения изменится.

Подсказка 5. Прямой код SQL

Можно вставлять sql-код напрямую в цепочки запросов eloquent (или DB::). Например,

Подсказка 6. Переменная $loop для foreach в blade

Внутри цикла можно определять, является ли итерация первой или последней. Также можно определить номер итерации ($loop->count).

Подсказка 7. Сравнение дат в Eloquent

Подсказка 8. Группировка роутов

Подсказка 9. Инкремент и декремент в запросах к бд

Подсказка 10. Проверка view на существование

Можно указать массив с видами, тогда будет загружен первый существующий.

Подсказка 11. Отключение timestamps-столбцов в модели

Если таблица не содержит столбцов created_at и updated_at, то необходимо в модели указать своство public $timestamps = false;

Подсказка 12. Поля миграция для таймзон

Кроме timestamps в миграциях можно создавать поля timestampsTz(), dateTimeTz(), timeTz(), timestampTz(), softDeletesTz().

Подсказка 13. Eloquent-метод has() имеет второй уровень

Подсказка 14. Редкие типы столбцов в миграциях

Подробнее https://laravel.com/docs/master/migrations#creating-columns

Подсказка 15. Справка в artisan

Для описания artisan-команды запустите ее с флагом --help. Например, результатом php artisan make:model --help будет:

Подсказка 16. Timestamp по умолчанию

Для столбца ->timestamp() можно применить ->userCurrent(). Тогда значение по умолчанию будет CURRENT_TIMESTAMP.

Подсказка 17. Присваивание user_id с помощью Observers

Выполним make:observer и в методе creating() присвоим user()->id():

Подсказка 18. Soft-deletes: множественное восстановление удаленных записей

Восстановление нескольких записей можно осуществить одной строкой кода:

Подсказка 19. HasMany().  Фильтр по количеству дочерних записей.

Подсказка 20. Валидация размеров изображения

Подсказка 21. Группа роутов для динамических поддоменов

Подсказка 22. Версия Laravel

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

Подсказка 23. Отправка email в log

Для тестирования отправки email в файле .env можно указать MAIL_DRIVER=log. В результате все email будут сохранены в storage/logs/laravel.log и не будут отправлены.

Подсказка 24. Blade-шаблон для ошибок

Если вы хотите создать специальную страницу для ошибки с конкретным HTTP-кодом, например, 500, то можно создать файл resources/views/errors/500.blade.php, который будет автоматически отображаться в случае ошибки с таким кодом.

Подсказка 25. Callback для фабрики

Можно добавить действие после того, как запись была создана.

Подсказка 26. Параметры artisan-команды

При создании artisan-команды можно запросить данные от пользователя несколькими способами: $this->confirm(), $this->anticipate(), $this->choice().

Подсказка 27. Предпросмотр для Mailables

Если для отправки email вы используете Mailables, то вы можете посмотреть результат напрямую в браузере без собственно отправки. Для этого необходимо в роуте вернуть объект Mailable:

Подсказка 28. Роут без контроллера

Если роут предназначен просто для отображения вида, то можно использовать функцию Route::view():

Подсказка 29. @auth в blade-шаблоне

Вместо конструкции:

Используйте:

Подсказка 30. Столбцы в eloquent-методе all()

При вызове Model::all() можно указать, какие именно столбцы необходимо вернуть из таблицы.

Подсказка 31. Localhost в файле .env

Не забудьте в файле .env изменить значение APP_URL  с http://localhost на реальный адрес, так как он будет использован в email-оповещения и не только.

Подсказка 32. Что скрывается за Auth::routes()?

Достаточно посмотреть файл /vendor/laravel/framework/src/illuminate/Routing/Router.php​.

Подсказка 33. Eloquent ...orFail

На ряду с findOrFail() в Eloquent существует метод firstOrFail, который генерирует ошибку 404, если по запросу нет ни одной записи.

все материалы по Laravel 5+