Laravel Artisan Komutları İle Veritabanı Yönetimi Rehberi
Bu rehberde ne öğreneceksiniz?
Laravel Artisan komutlarını kullanarak uygulamanızın veritabanı (DB) kayıtlarını nasıl yöneteceğinizi adım adım öğreneceksiniz. Sunucu konsolu üzerinden yeni kayıt eklemeyi (link:new), mevcut kayıtları listelemeyi (link:list) ve gerektiğinde silmeyi (link:delete) uygulamalı olarak göreceksiniz. Bu yöntem, arka plan görevleri ve prototipleme için ideal bir çözümdür.
1. Yeni Bağlantı Ekleme Komutu Oluşturma (link:new)
Artisan, Laravel'in komut satırı aracıdır ve geliştirme sürecini hızlandırır. İlk olarak, veritabanına yeni bir kayıt ekleyecek komutu oluşturalım.
Komut Dosyasını Oluşturma
Yeni bir Artisan komutu oluşturmak için make:command yardımcısını kullanın:
docker-compose exec app php artisan make:command LinkNew
Bu komut, app/Console/Commands/LinkNew.php dosyasını oluşturur.
Komut İmzasını ve Mantığını Tanımlama
Oluşturulan LinkNew.php dosyasını açın. Komutun çalıştırılabilir adı olan imzayı ($signature) ve ana iş mantığını handle() metodu içine yerleştirin:
nano app/Console/Commands/LinkNew.php
Dosyayı aşağıdaki kod ile değiştirin. Bu kod; URL sorar, geçerliliğini kontrol eder, açıklama ister ve onayla veritabanına kaydeder.
// app/Console/Commands/LinkNew.php
<?php
namespace App\Console\Commands;
use App\Models\Link;
use Illuminate\Console\Command;
class LinkNew extends Command
{
protected $signature = 'link:new';
protected $description = 'Yeni bir Baglanti olusturur';
public function handle()
{
$url = $this->ask('Baglanti URL:');
// URL dogrulama
if (!filter_var($url, FILTER_VALIDATE_URL)) {
$this->error("Gecersiz URL. Cikiliyor...");
return 1; // Hata kodu ile cikis
}
$description = $this->ask('Baglanti Aciklamasi:');
$this->info("Yeni Baglanti:");
$this->info($url . ' - ' . $description);
if ($this->confirm('Bilgiler dogru mu?')) {
$link = new Link();
$link->url = $url;
$link->description = $description;
$link->save();
$this->info("Kaydedildi.");
}
return 0; // Basarili cikis
}
}
Komutu Çalıştırma
Oluşturduğunuz komutu terminalden çalıştırarak test edin. Örnek alan adını rabisu.cloud olarak kullanabiliriz:
docker-compose exec app php artisan link:new
Bu komut, yeni bir bağlantı kaydı ekleme sürecini başlatır.
2. Bağlantıları Listeleme Komutu Oluşturma (link:list)
Şimdi, veritabanındaki tüm bağlantıları listeleyecek ikinci komutumuzu oluşturalım.
Komut Dosyasını Oluşturma
Listeleme komutu için yeni bir dosya oluşturun:
docker-compose exec app php artisan make:command LinkList
Bu komut, app/Console/Commands/LinkList.php dosyasını oluşturur.
Tüm Kayıtları Tablo Halinde Gösterme
LinkList.php dosyasını açın ve handle() metodu içinde Eloquent ile tüm kayıtları çekip table yardımıyla konsola yazdırın:
nano app/Console/Commands/LinkList.php
Dosyayı aşağıdaki kod ile değiştirin:
// app/Console/Commands/LinkList.php
<?php
namespace App\Console\Commands;
use App\Models\Link;
use Illuminate\Console\Command;
class LinkList extends Command
{
protected $signature = 'link:list';
protected $description = 'Veritabanina kaydedilmis baglantilari listeler';
public function handle()
{
$headers = ['id', 'url', 'aciklama'];
$links = Link::all(['id', 'url', 'description'])->toArray();
$this->table($headers, $links);
return 0;
}
}
Komutu Çalıştırma
Kayıtlarınızı tablo halinde görmek için komutu çalıştırın:
docker-compose exec app php artisan link:list
3. Bağlantı Silme Komutu Oluşturma (link:delete)
Son olarak, verilen kimlik (ID) numarasına göre bir kaydı silen komutu hazırlayalım.
Komut Dosyasını Oluşturma
Silme komutu için yeni bir dosya oluşturun:
docker-compose exec app php artisan make:command LinkDelete
Bu komut, app/Console/Commands/LinkDelete.php dosyasını oluşturur.
Argüman ve Silme Mantığını Tanımlama
Bu komutun çalışması için kullanıcıdan silinecek kaydın ID’sini argüman olarak alması gerekir. İmzada bu argümanı tanımlayalım: link:delete {link_id}.
nano app/Console/Commands/LinkDelete.php
Dosyayı aşağıdaki kod ile değiştirin:
// app/Console/Commands/LinkDelete.php
<?php
namespace App\Console\Commands;
use App\Models\Link;
use Illuminate\Console\Command;
class LinkDelete extends Command
{
protected $signature = 'link:delete {link_id}';
protected $description = 'Veritabanindan bir baglantiyi siler.';
public function handle()
{
$link_id = $this->argument('link_id');
$link = Link::find($link_id);
if ($link === null) {
$this->error("Gecersiz veya mevcut olmayan baglanti ID'si.");
return 1;
}
if ($this->confirm('Bu baglantiyi silmek istediginizden emin misiniz? ' . $link->url)) {
$link->delete();
$this->info("Baglanti silindi.");
}
return 0;
}
}
Komutu Çalıştırma
Önce link:list ile silmek istediğiniz kaydın ID’sini öğrenin, ardından silme komutunu çalıştırın. Örneğin ID'si 2 olan kaydı silelim:
docker-compose exec app php artisan link:delete 2
Bu komut, ID numarası 2 olan bağlantıyı silmek için onay ister.
Sıkça Sorulan Sorular (SSS)
- Artisan komutları web formu yerine neden tercih edilir?
Artisan komutları sunucuya doğrudan erişim gerektirir. Bu, veritabanı yönetimi gibi hassas işler için ek bir güvenlik katmanı sağlar. Ayrıca zamanlanmış görevler (Cron Job) veya prototipleme için çok hızlı ve pratik bir yöntemdir.
- Komut argümanları
(örnek: {link_id})ve seçenekleri nasıl tanımlanır?
Argümanlar {isim} şeklinde zorunlu parametreleri tanımlar. Seçenekler ise {--isim} veya {--isim=varsayilan} şeklinde isteğe bağlı parametreleri tanımlar. Argümanlar sıraya, seçenekler ise anahtar-değer çiftine bağlıdır.
- Eloquent Model nedir ve neden kullanılıyor?
Eloquent, Laravel'in ORM (Nesne-İlişkisel Eşleyici) aracıdır. Veritabanı tablolarını sınıflara (Model) eşler. Böylece SQL sorguları yazmak yerine, Link::find(1 veya $link->save() gibi daha okunabilir ve güvenli PHP kodlarıyla veritabanı ile etkileşim kurarsınız.
return 0vereturn 1ne anlama geliyor?
Bu değerler, komutun çalıştırıldığı işletim sistemine çıkış kodunu (exit code) bildirir.
0 (Sıfır): Komutun başarıyla tamamlandığı anlamına gelir.
1 (Bir) veya daha fazlası: Komutun bir hata ile veya anormal bir durumla sonlandığı anlamına gelir. Bu, otomasyon senaryolarında önemlidir.
Sonuç
Bu adımları tamamlayarak, uygulamanız için komut satırı üzerinden veritabanı yönetimini başarıyla kurmuş oldunuz. Uygulama geliştirme süreçlerinizi hızlandırmak için bu güçlü araçtan faydalanabilirsiniz. Daha gelişmiş görevler ve otomasyonlar için Rabisu Bulut platformunda hemen deneyebilirsiniz.