Ещё один клёвый тренажёр+учебник по SQL
Тут можно потренироваться в хитрых джойнах, агрегациях и понабивать руку. Интерфейс очень приятный и позволяет потыкать схему БД, даёт подсказки как в коде, так и непосредственно по решению
В более сложные штуки (к примеру, в оконные функции) этот ресурс не лезет. Ну и запросы даже в самых сложных задачках получаются не сказать чтобы громоздкие
👉 https://sql-academy.org/ru/trainer
👉 @PHPgx | #ресурсы
Тут можно потренироваться в хитрых джойнах, агрегациях и понабивать руку. Интерфейс очень приятный и позволяет потыкать схему БД, даёт подсказки как в коде, так и непосредственно по решению
В более сложные штуки (к примеру, в оконные функции) этот ресурс не лезет. Ну и запросы даже в самых сложных задачках получаются не сказать чтобы громоздкие
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Ваш файл
ЧЕТЫРЕ возможных решения☕️
РЕШЕНИЕ 1: Команды в терминале
Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
🔹
🔹
🔹
РЕШЕНИЕ 2: Изменение режима логирования на "daily"
В файле
Это заставит Laravel создавать новый лог-файл каждый день (например,
РЕШЕНИЕ 3: Пакет Log Viewer
Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.
РЕШЕНИЕ 4: Внешние платные инструменты
Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
🔹 Sentry
🔹 Bugsnag
🔹 Flare
Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
🔹 Papertrail
🔹 Loggly
🔹 LogDNA
Есть что-то, что вы бы добавили в этот список?
👉 @PHPgx
laravel.log слишком большой? Трудно читать/искать нужную информацию?ЧЕТЫРЕ возможных решения
РЕШЕНИЕ 1: Команды в терминале
Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
tail -n 100 storage/logs/laravel.log – показать последние 100 строкtail -f storage/logs/laravel.log – потоковое обновление лога в реальном времениgrep -i "error" storage/logs/laravel.log – поиск ошибок (без учета регистра)РЕШЕНИЕ 2: Изменение режима логирования на "daily"
В файле
.env установите:LOG_CHANNEL=daily
Это заставит Laravel создавать новый лог-файл каждый день (например,
laravel-2025-01-01.log).РЕШЕНИЕ 3: Пакет Log Viewer
Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.
РЕШЕНИЕ 4: Внешние платные инструменты
Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
Есть что-то, что вы бы добавили в этот список?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥1
Laravel использует
Это также может быть очень полезно при разработке приложения, в котором пользователи могут настраивать выполнение задач с нужной им периодичностью.
Вот как я использовал его, чтобы дать пользователям возможность создавать и запускать автоматические отчёты по расписанию
👉 @PHPgx
Cron\CronExpression для определения времени выполнения запланированных задач.Это также может быть очень полезно при разработке приложения, в котором пользователи могут настраивать выполнение задач с нужной им периодичностью.
Вот как я использовал его, чтобы дать пользователям возможность создавать и запускать автоматические отчёты по расписанию
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Laravel Wayfinder
На той неделе команда Laravel выпустила новый инструмент — Wayfinder — в бета-версии:
https://github.com/laravel/wayfinder
Он генерирует TypeScript-функции, которые можно импортировать на фронтенде для ваших контроллеров и маршрутов
👉 @PHPgx
На той неделе команда Laravel выпустила новый инструмент — Wayfinder — в бета-версии:
https://github.com/laravel/wayfinder
Он генерирует TypeScript-функции, которые можно импортировать на фронтенде для ваших контроллеров и маршрутов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4
Теперь PHPUnit по умолчанию использует in-memory SQLite базу данных для тестов
Ранее эти настройки в файле
👉 @PHPgx
Ранее эти настройки в файле
phpunit.xml были закомментированы. Теперь они будут активны по умолчаниюPlease open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3🔥1
1.
git init – инициализация нового Git-репозитория в текущем каталоге.2.
git add – добавление изменений в индекс (staging area).3.
git commit – фиксация проиндексированных изменений с комментарием. 4.
git push – отправка локальных изменений в удалённый репозиторий.5.
git pull – получение изменений из удалённого репозитория и их слияние с локальной веткой.6.
git remote – добавление, просмотр или удаление удалённого репозитория.7.
git branch – вывод списка веток, создание новой ветки и переключение на неё.8.
git fetch – загрузка изменений из удалённого репозитория без их слияния.9.
git checkout – переключение на указанную ветку.10.
git merge – слияние указанной ветки с текущей.11.
git status – отображение текущего состояния репозитория и неподтверждённых изменений.12.
git reset – откат текущей ветки до указанного коммита.Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤6
Мне нравится эта новая фича в Laravel
Автоматическая жадная загрузка связей в Eloquent-моделях
В своём коде я убрал использование
На одной из самых тяжёлых страниц количество запросов было 16.
После применения
Круто.
👉 @PHPgx
Автоматическая жадная загрузка связей в Eloquent-моделях
В своём коде я убрал использование
$with и with().На одной из самых тяжёлых страниц количество запросов было 16.
После применения
Model::automaticallyEagerLoadRelationships() оно снизилось до 10.Круто.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6
Интересная вещь про PHP, которую я недавно узнал: что если вы хотите сделать continue в нескольких foreach-циклах?
Сначала я попробовал
👉 @PHPgx
Сначала я попробовал
continue; continue;, что (очевидно) не сработало — потом узнал, что в PHP можно передать число как {level}, указав, сколько уровней вложенности нужно пропустить.Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😁10❤3
Потратил часы на отладку, чтобы тебе не пришлось:
Если колонка в SQL допускает NULL и ты используешь
Урок, выученный самым тяжёлым способом. 😅
👉 @PHPgx
Если колонка в SQL допускает NULL и ты используешь
WHERE NOT, обязательно добавь OR IS NULL.NULL != значение — это не true, это unknown.Урок, выученный самым тяжёлым способом. 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤3🔥1
Ищете API-клиенты, альтернативы Postman?
Вот три инструмента, которые особенно нравятся разработчикам:
🔹 HTTPie — подсветка синтаксиса и удобное переключение между CLI и GUI
🔹 Yaak — организация рабочих пространств и низкое потребление памяти
🔹 Insomnia — поддержка GraphQL и чистый интерфейс
А каким API-инструментом пользуетесь вы?
👉 @PHPgx
Вот три инструмента, которые особенно нравятся разработчикам:
А каким API-инструментом пользуетесь вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Привет, разработчики Laravel
Мы используем сидеры базы данных для генерации тестовых/фейковых данных, с которыми будет работать наше приложение.
Но что, если вам нужно запускать эти сидеры внутри тестов?
Не беспокойтесь — базовый тестовый класс Laravel использует трейт
Вот пример кода, демонстрирующий, как можно засеять всю базу данных или выполнить отдельный сидер.
👉 @PHPgx
Мы используем сидеры базы данных для генерации тестовых/фейковых данных, с которыми будет работать наше приложение.
Но что, если вам нужно запускать эти сидеры внутри тестов?
Не беспокойтесь — базовый тестовый класс Laravel использует трейт
InteractsWithDatabase, который предоставляет метод для запуска сидирования данных внутри тестов.Вот пример кода, демонстрирующий, как можно засеять всю базу данных или выполнить отдельный сидер.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
В Laravel появилась новая функция — мемоизация кэша
Теперь с помощью метода
Это позволяет временно сохранять значения, извлечённые из кэша, прямо в памяти во время одного запроса или выполнения задания. В результате — никаких повторных обращений к кэшу в рамках одного выполнения.
Подробнее в документации: https://laravel.com/docs/12.x/cache#cache-memoization
👉 @PHPgx
Теперь с помощью метода
Cache::memo можно обернуть любое хранилище кэша в обёртку с мемоизацией. Это позволяет временно сохранять значения, извлечённые из кэша, прямо в памяти во время одного запроса или выполнения задания. В результате — никаких повторных обращений к кэшу в рамках одного выполнения.
Подробнее в документации: https://laravel.com/docs/12.x/cache#cache-memoization
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4
В новой версии PhpStorm появились крутые обновления:
🟣 Улучшения в настройке Xdebug и WordPress.
🟣 Автодополнение для
🟣 Поддержку вложенных переменных в
…а также множество других полезных функций и улучшений: https://jb.gg/phpstorm-251
👉 @PHPgx
@phpstan-type и @phpstan-import-type..env файлах.…а также множество других полезных функций и улучшений: https://jb.gg/phpstorm-251
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Выпущена документация для нового fluent-класса URI в Laravel, который значительно упрощает анализ и манипулирование URI.
Теперь можно даже возвращать экземпляры этого класса из маршрутов, чтобы автоматически генерировать ответы с перенаправлением на указанный адрес.
Документация Laravel 12.x – URI
👉 @PHPgx
Теперь можно даже возвращать экземпляры этого класса из маршрутов, чтобы автоматически генерировать ответы с перенаправлением на указанный адрес.
Документация Laravel 12.x – URI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2