Populate — це суперзаряджений сидер для Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 06 травня, 2025
Зануртеся у світ зручності та ефективності з пакетом Laragear Populate для Laravel! Ця стаття розкриває, як можна вдосконалити систему наповнення бази даних, організувавши якомога більше функцій, включаючи продовження невдалих спроб заповнення. Чи готові ви дізнатися більше?

Пакет Laragear Populate від @DarkGhostHunter – це вдосконалений сідер для застосунків на Laravel. Він пропонує корисні функції поверх стандартної системи заповнення бази даних у Laravel, включаючи можливість продовження невдалих спроб заповнення:

Модифікувавши стандартний Seeder з покращеною версією, ми можемо підвищити ефективність системи заповнення, реалізуючи покрокове заповнення, пропуск та можливість продовження заповнювальних процесів без втрати звичних функцій, забезпечуючи сумісність з класичними класами заповнювачів.

Сідери Populate використовують кроки заповнення, які представлені публічним методом, що починається з seed, або методом з атрибутом SeedStep. Це означає, що ваш сідер може бути більш організованим відповідно до типу даних, які ви хочете заповнити. Наступний приклад з README пакета демонструє кілька методів, які будуть викликані, а також можливість використання залежнісного вприскування:

namespace Database\Seeders;
 
use Database\Factories\UserFactory;
use Laragear\Populate\Attributes\SeedStep;
use Laragear\Populate\Seeder;
use App\TicketGenerator;
 
class UserSeeder extends Seeder
{
    public function __construct(protected TicketGenerator $ticket)
    {
        // ...
    }
 
    public function seedNormalUsers(UserFactory $users)
    {
        $users->count(5)->create(['ticket' => $this->ticket->generate()]);
    }
 
    public function seedVipUsers(UserFactory $users)
    {
        $users->vip()->count(3)->create();
    }
 
    #[SeedStep]
    public function bannedUsers(UserFactory $users)
    {
        $users->banned()->count(2)->create(['ticket' => $this->ticket->generate()]);
    }
}

Окрім виконання кроків заповнення, сідери, що використовують Populate, можуть визначати методи before(), after(), onError(), а також користуватися методом skip() під час виклику before() для пропуску кроку заповнення на основі знайдених умов:

if (User::query()->banned()->exists()) {
    $this->skip();
}

# Основні особливості

У README пакета міститься детальна документація про всі можливості сідерів Laragear Populate. Ви можете дізнатися більше про цей пакет, отримати повні інструкції з установки та переглянути код на GitHub.