Laravel Migration ve Model Oluşturma
Hepinize merhaba dostlarım 😊. Yine bir pazar günü ve yeni bir konu ile sizlerin karşınızdayım. Evet farkındayım hepimiz için yoğun bir hafta oldu ve haftasonu tatilinin güzel günlerinden ve haftanın Z raporunu yaptığımız günlerden birisi olan Pazar gününde harika bir konu olan Laravel Migration ve Model Oluşturma konusu ile karşınızdayım
şimdi aklınızda olan soruyu da bildiğime göre hemen sözü daha fazla uzatmadan konumuza girişimizi yapalım
Nedir bu Migration ve Model ?
Eveeet dostlarım artık konumuza girişimizi yapmış bulunmaktayız. Şimdi her zamankinden farklı olarak bu kısımda biraz teorik bir anlatıma giriş yapacağım.
Migration bizim laravel uygulamalarımızda veri tabanı oluşturduğumuzda phpMyAdmin kısmına yani MySQL e giriş yapmadan bize tablo ve kolonların oluşturulmasını sağlıyor. Günlük hayattan örnek verecek olursak dostlarım bir uygulama yazdınız varsayalım. Burada veri tabanındaki kolonları, tabloları migration ile oluşturdunuz diyelim. Bilgisayarınızda teknik bir arıza sonrasında sizin bu proje kodlarınızı alıp (tabi içerisinde migration vs oluşturmuşsanız) diğer bilgisayarda kurulumları vs yaptığınızda ve oluşturduğunuz migration dosyalarını çalıştırdığınızda veri tabanına otomatik olarak gelecektir. Ama migration oluşturmadan kendiniz manuel olarak yapmışsanız bütün işlemleri işte o an bilgisayarda kodlama yaparken veri tabanınızı çok ama çok dikkatli bir şekilde korumanızı öneririm. Çünkü herhangi bir teknik arıza sonrasında bu veri tabanı ve tablolar giderse projenin gidişatına bakıp kendiniz o tabloları yeniden oluşturmak zorunda kalacaksınız 😊. Migration kısmına ufakça değindiğimize göre gelelim şimdi model kısmı nedir ona bir bakalım
Model kısmına bakacak olursak dostlarım bizim laravel uygulamamız üzerinde veri tabanı işlemleri yapmamıza olanak sağlayan bir yapıdır. Şimdi aklınızda şu sorunun belirdiğini taaa buradan seziyorum 😊
E hocam biz zaten veri tabanına ekleme yapmıyor muyduk ? Neden yeni yeni terimler çıkartıyorsunuz 😄
gibi sorular var. Şimdi size ben şöyle özetleyim. Normalde
public function store(){
$data = [
"baslik" => "MFSoftware Blog",
"link" => mfsoftware.net
];
DB::table('menuler')->insert($data);
}
şeklinde kayıt yaparken (Fark ettiyseniz table kısmını yazıp menuler diyerek hangi tabloda işlem yapacağımızı belirttik) model kullandığımızda daha hızlı bir şekilde
public function store(){
$data = [
"baslik" => "MFSoftware Blog",
"link" => mfsoftware.net
];
MenulerModel::create($data); // BU KADAR BASİT :)
}
kodlarda göründüğü gibi daha kısa bir şekilde ekleme işlemini gerçekleştiriyoruz. Yani uzun uzun önce hangi tabloda işlem yapacağımızı daha sonra da hangi işlemi uygulayacağımızı vs gibi bir zahmete giriş yapmıyoruz tamamen pratikleşiyoruz 😊. (Bu kısma takılmayın ileride Eloquent ORM ile işlemler yapacağız 😊)
Çenemin düştüğünün farkındayım dostlarım o halde sözü daha fazla uzatmadan hemen kodlama kısmına geçişimizi yapalım
Migration ve Modelimizi Oluşturalım
Öncelikle dostlarım terminalimizi açtık ve
laravel new project
şeklinde kodumuzu yazdık ve projemiz indi 😊. Daha sonrasında ise MySQL bağlantımızı yapalım. Öncelikle bir veri tabanı oluşturalım. Ben migration-model isminde bir veri tabanı oluşturduk. Daha sonrasında ise .env dosyasına girip bağlantı işlemlerini gerçekleştirelim
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=migration-model
DB_USERNAME=root
DB_PASSWORD=12345678
şeklinde bağlantımızı yazdık dostlarım. Daha sonrasında ise örnek olarak bir migration ve model oluşturalım. Bunu nasıl yapacağız diye merak ediyorsanız dostlarım
php artisan make:model KullaniciModel -m
şeklinde kodumuzu yazdığımızda database/migrations dosya yolu içerisinde 2021_10_02_162136_create_kullanici_models_table.php şeklinde bir dosya oluşacaktır. Dosyanın içerisine baktığımızda ise
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateKullaniciModelsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('kullanici_models', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('kullanici_models');
}
}
şeklinde kodların olduğu bir dosya bizi karşılayacaktır. Şimdiiii gelin burada biraz oynamalar yapalım. Kullanıcı tablosu oluşturacağımıza göre tabloyla alakalı verilerin tutulacağı alanları, veri tiplerini ve oluşturacağımız tablo adını girmemiz gerekecektir. Gelin hemen hızlıca bunları ayarlayalım
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateKullaniciModelsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('kullanicilar', function (Blueprint $table) {
$table->id();
$table->string('nick')->nullable();
$table->string('name')->nullable();
$table->string('surname')->nullable();
$table->string('email')->nullable();
$table->tinyInteger('durum')->default(1)->nullable();
$table->tinyInteger('sira')->default(0)->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('kullanicilar');
}
}
şeklinde değişikliklerimizi yaptık. Şimdiiii aklınızda olan soruya gelelim
Hocam bazı değişik fonksiyonlar var orada string, tinyInteger, timestamps, default, nullable falan nedir hocam 😊
şeklinde sorularınızın olduğunu biliyorum. Şimdi ben de cevabı bir tablo üzerinden vereyim
Fonksiyon | Karşılığı |
string() | MySQL üzerindeki VARCHAR veri tipinin karşılığı |
tinyInteger() | MySQL üzerindeki TINYINT veri tipinin karşılığı |
timestamps() | MySQL üzerinde created_at, updated_at alanları oluşturur |
default() | Kolona veri girilmediği taktirde default olarak eklenecek olan veri |
nullable() | Belirtilen kolonun null değer alacağını ayarlamamıza yarar |
şeklinde kodlarımızı yazdık. Daha sonrasında dostlarım terminal kısmımıza gelip
php artisan migrate
komutumuzu yazıp çalıştıralım. Daha sonrasında ekranımıza gelecek olan sonuç
şeklinde olacaktır. Bu kısımda diğer migration dosyaları da mevcut dostlarım onlar bize laravel tarafından verilen migration dosyalarıdır. Onlara aldırış etmeyelim çünkü onları şu an biz oluşturmadık hazır geldi 😅. Şimdiii bu kısmı da gördüğümüze göre MySQL e gelip bakalım gerçekten kullanicilar tablomuz oluşturuldu mu bir bakalım
şeklinde tablolarımız oluşmuş bu süper bişey 😊. Şimdi bu tablomuzun içeriğine bakalım bir sıkıntı ve var mı bakalım
şeklinde buraya da baktık ve 10 numara 5 yıldız bir sonuç olmuş. Şimdiii bu kısmı da yaptığımıza göre gelelim oluşturduğumuz KullaniciModel dosyamıza 😊. Bunun için hemen App/Models altındaki KullaniciModell.php dosyası içerisine gelelim. İçerisi bizi
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class KullaniciModel extends Model
{
use HasFactory;
}
şeklinde karşılayacaktır dostlarım 😊. Şimdiii biz oluşturduğumuz bu modelimizi veri tabanımıza veri eklememiz için kullanacağımızdan dolayı bazı ayarlamalar yapacağız. Bunun için bu dosyamızın içerisine
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class KullaniciModel extends Model
{
use HasFactory;
protected $table = "kullanicilar"; // TABLOMUZUN İSMİ
protected $guarded = []; // TABLOMUZUN HER HUCRESİNDE VERİ İŞLEMLERİ YAPMAMIZA YARAR
}
şeklinde düzenlemeleri yapalım dostlarım 😊. Artık her şey tamamdır 😊. Proje bizden sadece ve sadece database işlemlerini yapmamızı bekler korumda artık 😊
Eveeeet dostlarım 😊. Bu yazımda Laravel üzerinde Migration ve Model Oluşturma konusunu elimden geldiğince dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum. Öğrenme süreci içerisinde bu ve bunun gibi olayların olması doğaldır. Bu durumda sizlerden yapmanızı istediğim tek şey her yazımın sonunda dediğim gibi "İstikrarlı ve azlimli olmalısınız, Bolca pratik yapmalısınız 😊". Bu dediklerimi hayat felsefeniz yaparsanız başarı sizler için kaçınılmaz olacaktır 😊
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊
Yazar Hakkında
Kendi Halinde Bir Backend Developer