Советы по моделям в Laravel
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
Привет, разработчики Laravel 👩💻
Начиная с Laravel v11.18.0, в методе
Пример использования метода
Раньше при использовании метода
Теперь мы можем передать параметр
Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
Начиная с Laravel v11.18.0, в методе
Str::limit()
появился новый параметр preserveWords
.Пример использования метода
limit()
— отображение предварительных версий текстового контента, таких как резюме или отрывки блог-постов.Раньше при использовании метода
limit
он мог разрывать слова посередине.Теперь мы можем передать параметр
preserveWords
как true
, и Laravel умно применит ограничение так, чтобы последнее слово было полным.Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/books_englishhh
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/books_englishhh
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Совет по Laravel 💡
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Password::defaults()
. Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
Вот 50-минутное руководство по атрибутам #PHP 📺
Узнайте, как создавать атрибуты с целью применения правил проверки к свойствам объекта передачи данных
Ознакомьтесь с этим видео здесь 👇 или сохраните в закладках на будущее
https://youtu.be/oSo4xbP6ZYo
@phpshka
Узнайте, как создавать атрибуты с целью применения правил проверки к свойствам объекта передачи данных
Ознакомьтесь с этим видео здесь 👇 или сохраните в закладках на будущее
https://youtu.be/oSo4xbP6ZYo
@phpshka
YouTube
PHP Attributes 50 Minute Tutorial
Dive into PHP attributes as we use them to implement validation rules in a DTO, showcasing a practical and efficient coding approach.
Check out THE FULL COURSE and get the code examples here:
https://www.garyclarke.tech/p/learn-object-oriented-php
🆓 Join…
Check out THE FULL COURSE and get the code examples here:
https://www.garyclarke.tech/p/learn-object-oriented-php
🆓 Join…
Совет по Laravel💡
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
@phpshka
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
DB::listen()
с toRawSql()
!@phpshka
Highload, системный дизайн, производительность и масштабирование
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.
🌐 С курсом «Системный дизайн высоконагруженных проектов» вы:
▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое)
▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд.
▪️ научитесь планировать нагрузку и связывать
бизнес-показатели с нефункциональными требованиями к системе
▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, презентации домашних проектов).
🥸 Кто мы: школа Devhands, основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и и управления глобальными технологическими организациями, член программного комитета Highload.
🗓 Старт 22-го октября, изучаем программу, записываемся здесь
Erid:2VtzqxYvjFF
Реклама. ИП Рыбак А.А. ИНН 771407709607
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.
▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое)
▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд.
▪️ научитесь планировать нагрузку и связывать
бизнес-показатели с нефункциональными требованиями к системе
▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, презентации домашних проектов).
Erid:2VtzqxYvjFF
Реклама. ИП Рыбак А.А. ИНН 771407709607
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
00:00:00 Введение
00:04:25 Делаем заготовку
00:16:20 Установка Swagger
00:22:18 Общие аннотации и настройки Swagger
00:28:01 CRUD со Swagger
01:03:03 Установка JWT Auth
01:13:08 Авторизация и защищенные роуты в Swagger
01:20:20 Бонус. Нестандартные тело запроса и ответа
источник
@phpishka
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ CipherSweet
Полезная библиотека, которая разработанная компанией Paragon Initiative Enterprises для реализации шифрования на уровне полей с возможностью поиска.
https://github.com/paragonie/ciphersweet
Полезная библиотека, которая разработанная компанией Paragon Initiative Enterprises для реализации шифрования на уровне полей с возможностью поиска.
https://github.com/paragonie/ciphersweet
GitHub
GitHub - paragonie/ciphersweet: Fast, searchable field-level encryption for PHP projects
Fast, searchable field-level encryption for PHP projects - paragonie/ciphersweet
Manticore + Laravel + Scout
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine.
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine.
Хабр
Manticore + Laravel + Scout
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine . Не смотря на то, что драйвер неофициальный, он...
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
https://laralibrary.com/top-packages-launched/2024
@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Angular: https://t.me/+qIJAuSEb2MQyMDJi
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Linux: t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Angular: https://t.me/+qIJAuSEb2MQyMDJi
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
This media is not supported in your browser
VIEW IN TELEGRAM
Мощный фреймворк для создания консольных приложений на PHP с псевдографическим пользовательским интерфейсом.
https://github.com/php-tui/php-tui
@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь переходить с PHP на Go? Посмотри как выглядит собес на Мидла
Эйч Навыки — менторская программа по Go-разработке, которая помогает поменять свой стек с PHP на Go, повысить грейд или найти новую работу.
7 ноября в 19:00 (мск) Даниил Динько, TeamLead команды Go-разработчиков в Oxygen Forensics (ex-Ozon), проведет открытое собеседование на Middle-позицию:
– Задаст реальные вопросы и задачи разработчику.
– Даст подробную обратную связь: объяснит, зачем задавал тот или иной вопрос, как лучше на него ответить или решить задачу.
Эфир будет полезен, если ты:
– Планируешь переходить с PHP на Go.
– Думаешь о переходе с PHP в другие стеки.
– Уже знаешь Go, но боишься начать проходить собеседования.
Это бесплатно?
Бесплатно
👾 Регистрируйся на эфир в боте Эйч Навыков и получи грейд-карту навыков по Go, необходимых при найме в бигтех-компаниях.
Эйч Навыки — менторская программа по Go-разработке, которая помогает поменять свой стек с PHP на Go, повысить грейд или найти новую работу.
7 ноября в 19:00 (мск) Даниил Динько, TeamLead команды Go-разработчиков в Oxygen Forensics (ex-Ozon), проведет открытое собеседование на Middle-позицию:
– Задаст реальные вопросы и задачи разработчику.
– Даст подробную обратную связь: объяснит, зачем задавал тот или иной вопрос, как лучше на него ответить или решить задачу.
Эфир будет полезен, если ты:
– Планируешь переходить с PHP на Go.
– Думаешь о переходе с PHP в другие стеки.
– Уже знаешь Go, но боишься начать проходить собеседования.
Это бесплатно?
Бесплатно
👾 Регистрируйся на эфир в боте Эйч Навыков и получи грейд-карту навыков по Go, необходимых при найме в бигтех-компаниях.
Laravel разработчики, упростите загрузку файлов с этим инструментом! 💎
Используйте
Совет: Настройте имя файла и заголовки для большего контроля.
@phpshka
Используйте
Storage::download()
, чтобы принудительно запустить скачивание файла в браузере. Отлично подходит для защищенных файлов или генерации динамических загрузок.Совет: Настройте имя файла и заголовки для большего контроля.
@phpshka