Merhabalar
Benim sorundan daha çok performans için tavsiyeye ihtiyacım var. Facebook'taki Laravel Türkiye grubunda sordum ama eskisi kadar aktif değil sanırım henüz cevap yazılmadı. Öncelikle örnek dosyaları göstereyim.
Veritabanı :

IcerikTuru Modeli :
http://laravel.io/bin/0eaDE
Tablo Modeli :
http://laravel.io/bin/7wBz1
(Tüm veritabanı tabloları için Modelleri açtım ve yukardakilere benzer bir şekilde ilişkilendirmelerini yaptım.)
Uygulumada yapmak istediğim, bir data oluşturup bu data'ya metot eklemek ve daha sonrasında uygulama içerisinde bu data ve metotlarıyla farklı işlemler yapmaktır. Şimdi bu verileri oluşturmak, kullanmak ve işlemek konusunda çok büyük sıkıntı yaşayacağımı zannetmiyorum. Daha öncesinde Laravel 4 ile bir uygulama yazmıştım ve çoğu özelliğini kabaca da olsa deneyip, kullanmıştım. Ama o zamanlar Eloquent'i fazla kullanmadan kendi sql sorgularımı yazarak halletmiştim. Bu sefer Eloquent ile her şeyi halletmek (eğer darda kalırsam sql sorgusu yapmak) istiyorum.
* Bu şekilde olan bir veritabanı için nasıl bir yöntem izlemeliyim. İlişkilendirmeleri hasMany() ve belongsTo() ile yaparak hallettim. Bunun daha verimli bir yolu var mıdır?
* IcerikTuru::find(1)->kapsamlar()->get(); şeklinde bilgileri çektiğimde 2 tane select * from'lu sql çalışıyor, bunu nasıl sadeleştirebilirim?
APP_ENV = production
APP_DEBUG = false
php artisan optimize
php artisan config:cache
php artisan route:cache
ayarlamalarını ve komutlarını kullandıktan sonra IcerikTuru::find(1)->kapsamlar()->get(); işlemini [ 0.3 saniye ] [ 5.87 MB ]'de yaptıktan sonra bir sonraki çalıştırmada süre [0.2]'ye düşüyor. (Veritabanında her bir tabloya test için 1 kayıt girmiştim)
Yeterince hızlı ama şuan Controller ve View dosyam
http://laravel.io/bin/8KB1Q şeklinde henüz bir işlem, döngü veya ekstra bir sorgu kullanılmamış durumda. Performans için yapabileceğim ekstra birşey var mı?
Bunların dışında benim yapmayı düşündüğüm şeyler;
- Veritabanı için cache / redis kullanmak
- Belirli Route ve View'lerde cache kullanmak ( eğer veritabanında alakalı bir içerik değişirse bu cache dosyasını temizlediğimde sorun çıkmaz sanırım)