WebCraft - ремесло веб разработки
6.47K subscribers
1.72K photos
258 videos
2 files
231 links
Интересуешься php , js , css , html , Laravel , Vue ? Этот канал для тебя

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront
Менеджер по рекламе: @Spiral_Yuri

Купить рекламу: https://telega.in/c/web_craft
Download Telegram
Управление синхронизацией с поисковыми индексами

Метод 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
Работа с методом whenLoaded

Какие параметры принимает метод whenLoaded?

Если забыли, то вернитесь к посту от 26.08.2024.

👉 @web_craft | #laravel
Очистка журнала запросов в 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
Работа с методом dispatchAfterResponse() в Laravel

Когда выполняется задача, отправленная с помощью метода dispatchAfterResponse()?

Если забыли, то вернитесь к посту от 02.09.2024.

👉 @web_craft | #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
Работа с методом withoutSyncingToSearch()

Что делает метод withoutSyncingToSearch() в Laravel?

Если забыли, то вернитесь к посту от 09.09.2024.

👉 @web_craft | #laravel
Кастомные атрибуты в моделях 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