Laravel Eloquent ORM ile Veri Çekme

Laravel Eloquent ORM ile Veri Çekme

Hepinize merhaba dostlarım 😊. Uzun soluklu ve yoğun geçen bir haftanın sonunda tekrardan sizlerle baraberim. Artık siz de alıştınız her pazar gününü iple çekmeye ve yeni yeni bilgiler öğrenmeye ve ben de bunu bir temel ihtiyacım gibi görüp hemen pazar sabahları kalkıp bilgisayarımın başında blog yazma pozisyonuma geçiyorum 😅.

Sözü daha fazla uzattığımın farkındayım dostlarım kusuruma bakmayın 😊. Bu haftaki konumuzun adı başlıktan da anlayacağınız üzere "Laravel ELoquent ORM ile Veri Çekme". Bunun aslında çok ufak bir örneğini bu makalede ayarlamıştık. Şimdi ise bunun farklı farklı kullanımlarından sizlere bahsedeceğim 😊. Çok fazla bir detaya ya da ayrıntıya kaçmadan sizlere nasıl bir şekilde kullandığımızdan bahsedeceğim :). O halde ne duruyorsunuz hemen proje ortamlarınızı kurun ve bir de nescafe alın kodlamaya başlayalım.

Eloquent ORM ile Veri Çekme

Eveeet artık kodlama kısmına geldik dostlarım. Proje ortamlarınızı kurduğunuza adım gibi eminim. Ve aynı zamanda veri tabanı bağlantısını yaptığınızı da seziyorum. Takılan dostlarım için buraya linki koydum. 

Şimdi dostlarım bir veri tabanı oluşturalım ve içerisine de bir tane tablo oluşturalım. Benim hali hazırda bir tablom vardı onun üzerinden göstermek istiyorum sizlere 😊.

Ben tablomu aşağıdaki şekildeki gibi ayarladım. İsterseniz siz de buna benzer şekilde bir tablo yapabilirsiniz dostlarım

şeklinde kayıtları alta doğru uzayıp giden bir tablom var. Bu kısma kadar tamam isek gelelim dostlarım verilerimizin çekilme işlemine. 

Şimdilik dostlarım bu tablomuzu oluşturduk. Ek olarak da ben bu tabloma erişmek için bir tane model oluşturmak istiyorum. (Harici migration vs oluşturup süreci uzatmaya gerek yok dostlarım tek bir model dosyası da ayarlayabilirsiniz).

OdalarModel isminde bir model dosyası oluşturdum dostlarım ve ben buradan da ek olarak erişmek istediğim tablonun ismini ayarladım. Örnek olarak gösterecek olursam

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class OdalarModel extends Model
{
    use HasFactory;

    protected $guarded = [];
    protected $table = "odalar";
}

şeklinde bir yapı oluşturdum. 

Gelelim asıl kısmımız olan verileri çekme işlemine 😊. Öncelikle dostlarım tablomuzun üzerindeki tim verileri çekme işlemini sizlere bir göstereyim. Bunun için harici bir controller açmamıza gerek yok şu anlık web.php üzerinde rahatlıkla ayarlama işlemimizi ayarlayabiliriz. O halde hemen gelelim ve

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $kayitlar = \App\Models\OdalarModel::all();
});

şekinde kodumuzu yazalım. Şimdi şaşırdığınızı gözlerinizden anlıyorum dostlarım 😊. Hepiniz diyorsunuz içinizden

Hocam bu kadarcık mı 😅

Evet dostlarım bu kadarcık 😅. Kısa bir kodla hemen tüm kayıtları çektirdik. Çektirdik çektirmesine de aklımıza bir soru daha geldi

Acaba cidden hepsi geldi mi ?

Bunun için de dostlarım Laravel üzerinde bizim imdadımıza yetişecek olan bir fonksiyon var. Bu fonksiyonumuzun ismi dd(); 😊. 

O halde neden hala dduruyoruz ki hemen kodlama ekranımıza geçişimizi yapalım

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $kayitlar = \App\Models\OdalarModel::all();
    dd($kayitlar);   // Ekranımıza Bastıracak
});

şeklinde kodlarımızı yazdık dostlarım. Daha sonrasında ise ekran çıktımıza bakacak olursak karşımıza gelecek olan ifade

şeklinde olacaktır. Bu kısımda gelen büyün kayıtları görebilir, kolonlarında hangi bilgileri barındırdığını da çok rahatlıkla görebiliriz. Bu kısma kadar tamam isek gelelim örnekleri bir tık değiştirmeye

Where ile Veri Çekme

Şimdi dostlarım bu kısma kadar tamamız ve mantığı çok rahat bir biçimde aklımıza oturttuk 😊. Artık bunları şartlı bir şekilde çekmemizin zamanı geldi.

Çekme örneğimize gelecek olursak dostlarım yetişkin fiyatları 100 ₺ üzerindeki odalar ekrana listelensin. Bunun için de hemen kodlama kısmımızı açalım dostlarım ve

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $kayitlar = \App\Models\OdalarModel::where("yetiskin_fiyat",">",100)->get();
    foreach ($kayitlar as $kayit){
        echo "<b>Oda: </b>".$kayit->oda_adi."<br>";
    }
});

şeklinde kodlarımızı yazalım. Kodları yazdık yazmasına da hemen sizin aklınızda bir şey canlandı ve ben bunu seziyorum 😊

Hocam önceki örnekte all() fonksiyonunu kullanmıştık. Ama burada da farklı olarak get() fonksiyonunu kullandık. Bunu yapmamızdaki amaç nedir ?

Öncelikle bu soruyu sorduğunuz için çok teşekkür ederim dostlarım 😊. Cevabımıza gelecek olursak durum aslında çok basit

Dostlarım eğer biz all() methodu kullanma gibi bir durumumuz olursa bunu sadece ve sadece bütün verilerin çekilme işlemini yapacağımız durumlarda ayarlamamız gerekecektir. Ama eğer şart vs yazacaksak ya da harici bir sorgu yazacaksak bu durumlarda her zaman get() fonksiyonunu kullanmalıyız 😊.

Bu kodlarımızı da yazdığımıza göre dostlarım gelelim ekran çıktımıza

Oda: Üç kişilik Standart Oda
Oda: Dört Kişilik Standart Oda
Oda: Superior Oda
Oda: Deluxe Oda
Oda: One Bedroom Suite
Oda: Standart Oda
Oda: Standart - İki Yataklı Oda
Oda: Standart Oda

şeklinde kayıtlar ekranımıza basılacaktır. Bingooo 💯 İşlemler gayet başarılı bir şekilde ilerliyor dostlarım 😊. Gelelim bir diğer örneğimize

OrderBy ile Veri Sıralama

Tüm verileri çektiğimize göre ve harici olarak bunları bazı şartlara göre getirme olayımızdan sonra geldik artık verilerimizin sıralanma işlemine. Bazı durumlarda dostlarımnasıl bir şekilde listeleneceği gibi durumlar kapımızı çalabilir. İşte bu durumlarda orderby komutunun devreye girdiğini hepimiz biliyoruz. 

Pekiii bu komutu laravelde nasıl kullanıyoruz ?

Çözüm öyle bir basit ki dostlarım 😊. Hemen bunu size kodlama üzerinden göstermek istiyorum. Bir önceki örnekte demiştik ya yetişkin fiyatı 100 ₺ üzerindeki kayıtları listeletelim diye. Şimdi ise o soruyu şu şekilde değiştirelim

Yetişkin fiyatı 100 ₺ den aşağı olan odaları id numarasına göre artan (asc) olarak listeleyelim. Bunun için hemen kodlama kısmına gelelim dostlarım ve

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $kayitlar = \App\Models\OdalarModel::where("yetiskin_fiyat","<",100)->orderBy("id","asc")->get();
    foreach ($kayitlar as $kayit){
        echo "<b>Oda: </b>".$kayit->oda_adi."<br>";
    }
});

şeklinde komutumuzu yazalım. Kodlarımızı çalıştırdığımızda ise karşımıza gelecek olan çıktı

Oda: Standart Oda
Oda: Aile Odası
Oda: Aile Odası

şeklinde olacaktır. Valla sorunsuz bir şekilde geliyor verilerimiz şanslı günümüzdeyiz dostlarım 😊. Bu kısım da tamam 

 

Eveeeet dostlarım 😊. Bu yazımda sizlere Laravel üzerinde Eloquent ORM kullanarak veri çekme işlemlerinden elimden geldiğince dilim döndüğünce bahsetmeye çalıştım. Umarım faydalı olmuşumdur. Eksik veya hatalı bir bilgi aktarımı yapmış isem benimle iletişime geçmekten çekinmeyin. Konu başlarda biraz karmaşık veya zor olabilir dostlarım anlıyorum. Özellikle öğrenme sürecinde bu gibi sorunlarla karşılaşma durumlarımız normaldir. Bu süreçte sizlerden tek istediğim şey her yazımın altında da dediğim gibi "İstikrarlı ve Azimli Olmanız, Bolca Pratik Yapmanız" olacaktır. Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıPHP Goto Kullanımı
Sonraki YazıMobbing (Psikolojik Şiddet) Nedir ?
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz