• 03-06-2015, 18:06:49
    #1
    Daha önceden spagetti kod yazarken artık framework kullanmanın zamanı geldi dedim. Bu yüzden de daha önceden yapmış olduğum bir otomasyon yazılımını laravel 5 ile yeniden kodlayarak işe başlayayım dedim. Başladım fakat doğru mu gidiyorum yanlış mı gidiyorum bu konuda fikirlerinize ihtiyacım var. En başından oop programlamayla ilgili daha önceden sadece makale okuduğumu ve herhangi bir uygulama yapmadığımı belirtmek isterim. Örnek veriyorum benim önceki yazılımımda Devices, Members, Logs ... şeklinde birden fazla modulüm vardı. Bunları şu şekilde ayırdım.

    Controllerlarımı

    app/Http/Controllers içinde
    --DeviceController.php
    --MemberController.php
    --LogController.php
    Modellerimi

    app içinde
    --Device.php
    --Member.php
    --Log.php
    View kısmınıda

    resources/views içinde

    -modules
    ---logs
    ----list.blade.php
    ----details.blade.php
    ----edit.blade.php
    
    ---members
    ----list.blade.php
    ----details.blade.php
    ----edit.blade.php
    
    ---devices
    ----list.blade.php
    ----details.blade.php
    ----edit.blade.php
    Özellikle view kısmının bu şekilde düzenli olmasına dikkat ettim.

    Gelelim yaptığım işlemlere. Örneğin LogController için routes.php içinde şöyle bir tanımlama yaptım.

    Route::controller('logs', 'LogController')
    Bu şekilde logs linki ile direk loglarıma ait controllerıma ulaştım.

    bunun içinde getIndex getDetails postEdit gibi fonksiyonlar oluşturup verdiğim link yapısına göre işlem yapmasını sağladım. Daha önceden okuduğum makalelerde veritabanı sorgularını model dosyalarında yapın sürekli aynı sorguyu yapmaktan kurtulursunuz deniyordu. Kafamı kurcalayan konuda burada başlıyor. Yine loglar için örnek vereceğim.

    Log.php dosyamda tabloma bağlandım.

    LogController.php dosyamın içine

    use App\Log;
    diyerek model dosyamı çalıştırdım. örneğin getIndex() metodumda Log::get(); dediğim zaman bana tüm loglarımı getiriyor veya
    getDetails($id = NULL)
    methodumda
    Log::where('id', $id)->first();
    dediğim zaman bana ilgili id ye ait kayıt bilgisini getiriyor buraya kadar da tamam. Şuana kadar model dosyasını sadece ilgili tabloya bağlanmak için kullandım. Bunun dışında herhangi bir işime yaramadı mesela. Bana birşeyleri eksik yapıyorum ya da bu model dosyası kullanımı gereksizmiş gibi geliyor. Yanlış mı düşünüyorum? Gidişatım sizce doğru mu? Sizce neler yapmalıyım?
  • 09-06-2015, 11:35:25
    #2
    Gidişatta bi sıkıntı yok. Ama modellerde kullandığın sınıf Eloquent eğer Laravel'in dökümantasyonundan bu başlığa bakarsan daha neler yapabileceğiniz görebilirsin. Şuan ki kullandığın şekille çok kısıtlı kullanıyorsun.

    Örnek veriyorum. Tabloların şu şekilde olsun

    kullanicilar
    *id
    *kullanici_adi
    *ili

    iller
    *id
    *il_adi
    *bulundugu_ulke

    ulkeler
    *id
    *ulke_adi

    Modellerinde gerekli ilişkilendirmeleri yaptıktan sonra şu şekilde bir kullanım sağlayabilirsin.

    Kullanicilar::find(1)->getIli->getUlke['ulke_adi'];

    Ki bunlar en basit One To One ilişkisi daha çok ilişkilendirme var.