Skip to main content

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.


Ş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)

  1. 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.

  1. 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.

  1. 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.

  1. return 0 ve return 1 ne 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.