Command Oluşturmak
- Terminalde
php artisan make:command TempGenerateSearchableForStudent
komutunu yazarak yeni bir command oluştur.
- Yeni oluşturulan komut dosyası app > Console > Commands içine TempGenerateSearchableForStudent.php olarak eklenir.
- Bu dosyada bu komutu çalıştırdığımızda ne yapacağı handle() fonksiyonu içinde tanımlanır.
- Komutun $signature değişkeni onun nasıl çağırılacağını belirler. Ör.
protected $signature = 'temp:generate-searchable-for-student';
dersek, bu komutu çalıştırmak için terminalde php artisan temp:generate-searchable-for-student
dememiz yeterli.
Command'i Uygularken kullanılabilecek komutlar
->info()
Terminale bilgi satırı eklememizi sağlar.
->warn()
Terminalde uyarı satırı eklememizi sağlar.
->error()
Terminalde hata satırı göstermemizi sağlar.
->confirm()
İşleme başlamadan önce teyit almamızı sağlar.
Command'i Uygularken ProgressBar ile Süreç takibi
- ProgressBar'ın max limitini belirle
$queryCount = Student::query()->whereNull('searchable')->count();
- Max limiti bu değer üzerinden belirleyerek yeni bir progressbar oluştur ve başlat
- Komutun ana fonksiyonunu veritabanındaki nesneler üzerinde dönerek uygula... bu sırada progressbar'ın ilerlemesi için
->advance()
fonksiyonunu kullan.
- İşlem bitince
->finish()
fonksiyonunu kullan.
- Örnek kod:
Püf Noktalar
- chunkById ile veritabanı değerlerini bloklar halinde işle
- Veritabanı yazma işlemini try & catch içine al
Cookbook
Cookbook2
Kaynaklar
- ChunkById - link