Управление синхронизацией с поисковыми индексами
Метод
По умолчанию Laravel синхронизирует изменения модели с поисковыми индексами при создании, обновлении или удалении записей. Однако, бывают случаи, когда не требуется синхронизация или она может быть выполнена позже. В таких ситуациях метод
Пример:
Метод
👉 @web_craft | #laravel
Метод
withoutSyncingToSearch()
в Laravel используется для предотвращения автоматической синхронизации изменений модели с поисковыми индексами.По умолчанию Laravel синхронизирует изменения модели с поисковыми индексами при создании, обновлении или удалении записей. Однако, бывают случаи, когда не требуется синхронизация или она может быть выполнена позже. В таких ситуациях метод
withoutSyncingToSearch()
помогает временно отключить автоматическую синхронизацию.Пример:
use App\Models\Post;
// Обновление модели без синхронизации с поисковым индексом
Post::withoutSyncingToSearch(function () {
Post::find(1)->update(['title' => 'Обновленный заголовок']);
});
Метод
withoutSyncingToSearch
используется для обновления заголовка записи Post без синхронизации этих изменений с поисковым индексом. Как только функция замыкания выполнится, синхронизация автоматически включится снова.👉 @web_craft | #laravel
От нуля до 35 миллионов: трудности масштабирования Laravel с помощью Octane
Статья описывает опыт автора по масштабированию веб-приложения, разработанного с использованием Laravel, с помощью Octane. Автор рассказывает о трудностях, с которыми он столкнулся при увеличении производительности приложения на фоне роста пользовательской базы до 35 миллионов запросов. В статье рассматриваются технические аспекты оптимизации и проблемы, такие как сложности с памятью, узкими местами в архитектуре и необходимость постоянного мониторинга и корректировок.
👉 @web_craft | #laravel
Статья описывает опыт автора по масштабированию веб-приложения, разработанного с использованием Laravel, с помощью Octane. Автор рассказывает о трудностях, с которыми он столкнулся при увеличении производительности приложения на фоне роста пользовательской базы до 35 миллионов запросов. В статье рассматриваются технические аспекты оптимизации и проблемы, такие как сложности с памятью, узкими местами в архитектуре и необходимость постоянного мониторинга и корректировок.
👉 @web_craft | #laravel
Работа с методом whenLoaded
Какие параметры принимает метод
Если забыли, то вернитесь к посту от26.08.2024 .
👉 @web_craft | #laravel
Какие параметры принимает метод
whenLoaded
?Если забыли, то вернитесь к посту от
👉 @web_craft | #laravel
Очистка журнала запросов в Laravel
Когда вы работаете с базой данных в Laravel, часто возникает необходимость отслеживать выполненные запросы для отладки и мониторинга производительности. Laravel предоставляет встроенную возможность вести журнал всех SQL-запросов, выполненных в рамках одного запроса HTTP. Для этого используется метод
Здесь на помощь приходит метод
Пример:
👉 @web_craft | #laravel
Когда вы работаете с базой данных в Laravel, часто возникает необходимость отслеживать выполненные запросы для отладки и мониторинга производительности. Laravel предоставляет встроенную возможность вести журнал всех SQL-запросов, выполненных в рамках одного запроса HTTP. Для этого используется метод
DB::enableQueryLog()
, который активирует журнал запросов. Однако, когда журнал становится слишком большим или его данные больше не нужны, вам может понадобиться его очистить.Здесь на помощь приходит метод
flushQueryLog()
. Этот метод позволяет быстро очистить текущий журнал запросов.Пример:
use Illuminate\Support\Facades\DB;
// Включение журнала запросов
DB::enableQueryLog();
// Выполнение запросов
$users = DB::table('users')->get();
$posts = DB::table('posts')->get();
// Очистка журнала запросов
DB::flushQueryLog();
// Проверка журнала запросов
$log = DB::getQueryLog();
print_r($log); // Пустой массив, если журнал был очищен
👉 @web_craft | #laravel
Пользовательские карточки Laravel Pulse
Статья объясняет, как создать пользовательские карточки в Laravel Pulse для отображения метрик, таких как количество запросов на каждую машину Fly.io. В ней описывается создание Livewire-компонента, настройка отображения данных на карточке, перехват запросов с помощью middleware и запись этих данных в таблицы Pulse. В конце показывается, как вывести собранные данные на кастомной карточке в панели управления Pulse.
👉 @WebCraft | #laravel
Статья объясняет, как создать пользовательские карточки в Laravel Pulse для отображения метрик, таких как количество запросов на каждую машину Fly.io. В ней описывается создание Livewire-компонента, настройка отображения данных на карточке, перехват запросов с помощью middleware и запись этих данных в таблицы Pulse. В конце показывается, как вывести собранные данные на кастомной карточке в панели управления Pulse.
👉 @WebCraft | #laravel
Работа с методом dispatchAfterResponse() в Laravel
Когда выполняется задача, отправленная с помощью метода
Если забыли, то вернитесь к посту от02.09.2024 .
👉 @web_craft | #laravel
Когда выполняется задача, отправленная с помощью метода
dispatchAfterResponse()
?Если забыли, то вернитесь к посту от
👉 @web_craft | #laravel
Защита полей модели
В Laravel механизм массового заполнения (
Предположим, у нас есть модель
В примере поля
👉 @WebCraft | #laravel
В Laravel механизм массового заполнения (
Mass Assignment
) позволяет быстро создавать или обновлять модели, заполняя их атрибуты массивом данных. Однако, чтобы предотвратить нежелательное или вредоносное заполнение полей, важно правильно настроить защиту через свойства $fillable
или $guarded
.$guarded
— это массив полей модели, которые запрещено массово заполнять. В отличие от $fillable
, который указывает на разрешенные для массового заполнения поля, $guarded
работает по принципу "запрещено всё, кроме". Это значит, что все поля модели защищены от массового заполнения, кроме тех, которые явно не указаны в массиве $guarded
.Предположим, у нас есть модель
User
, и мы хотим запретить массовое заполнение полей is_admin
и password
, чтобы они не могли быть изменены через массовое заполнение.class User extends Model
{
protected $guarded = ['is_admin', 'password'];
}
В примере поля
is_admin
и password
будут защищены от массового заполнения.👉 @WebCraft | #laravel
Прокси объектов коллекции в Laravel на уровне высших порядков
Статья описывает механизм прокси объектов в Laravel для работы с коллекциями. Высокоуровневые прокси позволяют передавать методы к объектам коллекций напрямую, упрощая код и делая его более читаемым. Примеры включают отправку писем заблокированным пользователям или автоматизацию браузеров при тестировании.
👉 @web_craft | #laravel
Статья описывает механизм прокси объектов в Laravel для работы с коллекциями. Высокоуровневые прокси позволяют передавать методы к объектам коллекций напрямую, упрощая код и делая его более читаемым. Примеры включают отправку писем заблокированным пользователям или автоматизацию браузеров при тестировании.
👉 @web_craft | #laravel
Работа с методом withoutSyncingToSearch()
Что делает метод
Если забыли, то вернитесь к посту от09.09.2024 .
👉 @web_craft | #laravel
Что делает метод
withoutSyncingToSearch()
в Laravel?Если забыли, то вернитесь к посту от
👉 @web_craft | #laravel
Кастомные атрибуты в моделях Laravel
В Laravel можно легко работать с кастомными атрибутами моделей, используя методы
-
-
В примере метод
👉 @web_craft | #laravel
В Laravel можно легко работать с кастомными атрибутами моделей, используя методы
getAttribute()
, setAttribute()
. Эти методы позволяют контролировать, как данные сохраняются и выводятся из модели.-
getAttribute()
: используется для доступа к значениям атрибутов. С его помощью можно модифицировать данные перед их возвратом.-
setAttribute()
: позволяет модифицировать данные перед их сохранением в базе. Это удобно для предварительной обработки данных, например, шифрования паролей.class User extends Model
{
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
}
В примере метод
getFullNameAttribute()
возвращает полное имя пользователя, а setPasswordAttribute()
шифрует пароль перед сохранением в базе данных.👉 @web_craft | #laravel