Latest Posts

Laravel “wasRecentlyCreated” özelliği ile modelin yeni oluşturulup oluşturulmadığını öğrenin

Laravel wasRecentlyCreated kullanımı

Laravel’de veritabanından bir kaydı firstOrCreate methodu ile çekiyorsanız, ve eğer kayıt veritabanında yoksa yeni kayıt oluşturuyorsanız; firstOrCreate methodu ile dönen sonucun yeni mi oluşturulduğunu yoksa zaten veritabanında olduğunu tespit etmenizi yaratan özelliğimiz (property) wasRecentlyCreated.

Ekran görüntüsünde de görebileceğiniz gibi, kullanıcının yeni oluşup oluşmadığını bu özellik ile kontrol edebiliyorsunuz.

Sadece firstOrCreate ile değil, diğer yöntemlerle oluşturduğunuz kayıtlarda da bu özelliği kullanabilirsiniz.

Bu özellik, sadece geçerli yaşam döngüsünde kullanılabilir. Yani yeni oluşturulup oluşturulmadığını anlamak için tarih kontrolü vs yapılmaz. Bir kayıt oluşturulduğunda; objeye, ek olarak yeni oluşturulduğuna dair bir ekleme yapılır.

Umarız Eloquent’in bu çok bilinmeyen özelliği bir noktada işinizi kolaylaştırır 🙂

Composer’da spesifik PHP versiyonu ayarlaması

Php 7.0, 7.1, 7.2 çok güzel özelliklerle geldi. Hoşgeldiler. Fakat kimi zaman sunucu ile local çalışma ortamımız arasında versiyon farklılıkları olabilir. Örneğin local çalışma ortamımızda Php 7.0 yüklü ve sunucuda Php 7.1 / 7.2 yüklü ise; büyük oranda (deprecated özellik kullanılmadıysa) bir problem yaşamadan çalışacaktır.

Ama eğer local çalışma ortamınızda Php 7.2 yüklü ve sunucunuzda 7.1/7.0 yüklü ise problemle karşılaşmanız olası. Örneğin, 7.2 sürümünde yeni eklenmiş özelliklerden birini localde geliştirme yaparken kullanıyorsanız, sunucuya gönderdiğinizde 7.2 den daha düşük bir versiyon olduğu için bu yeni özellik hata verecektir. Bundan kaçınmak çok zor değil. Hem IDE’ler bu konuda destek veriyor hem de aşağı yukarı yeni eklenen tüm özellikler bilindiğinden kullanmaktan kaçınılabiliyor. Tabi bunun en iyi yolu, test yazıp hangi versiyonlarda kullanacaksanız onlar için test çalıştırmak. Böylece uygulamanızın kullanmak istediğiniz php versiyonlarında hata verip vermeyeceğini görebilirsiniz.

Bir diğer problem ise, composer ile gelen bağımlılıklarda yaşanabilir. Composer’da aslında çok güzel bir özellik var. Örneğin, bir paketi dahil ettiğinizde; o paketin 7.0 için farklı, 7.2 için farklı sürümü yüklenebiliyor. Genelde sizin yüklediğiniz paketlerde bunlar yaşanmıyor ama o paketlerin alt bağımlılıkları için bu tarz tanımlamalar yapılmış olabiliyor. Bu da şuna yol açıyor:

X paketinin bağımlılıkları, sizin sisteminize PHP 7.2 ye göre yükleniyor.
Fakat sunucuda PHP 7.0 yüklü olduğu için bu bağımlılıklar sunucunuza yüklenemiyor.

Bundan kaçınmak için çok güzel bir ayar var. composer.json dosyamıza eklememiz gereken satır şu şekilde:

"config": {
"platform": {
"php": "7.0"
}
}

Gördüğünüz gibi, uygulamamızın PHP7.0 a göre çalışacağını belirtiyoruz ve composer ona göre davranıyor. Sizin sisteminizde Php7.2 yüklü olsa ile, tüm bağımlılıklar 7.0 mış gibi yüklenecek. Config için diğer ayarlardan da ileride bahsedeceğiz.

Laravel 5.5 ile eklenen yeni Route methodları

laravel routerLaravel 5.5 ile gelen yeniliklerden bir diğer ise, Router’a eklenen yeni methodlar oldu. Yeni gelen 2 method ile doğrudan router tanımlarınızın olduğu dosyada bir view görüntülemesini sağlayabilirsiniz ya da hızlıca 301, 302, 307 redirect işlemi gerçekleştirebilirsiniz. Bu eklenen methodlar sayesinde çok basit bu 2 işlem için yeni controller oluşturmamız gerekmeyecek.

Laravel ile Cloudflare ücretsiz SSL hizmeti

Cloudflare Logo

Laravel LogoCloudflare, sunucularınız için ücretsiz bir reverse-proxy hizmetidir. Ancak ücretsiz hesap kullanırken, cloudflare’in verdiği SSL hizmeti, Laravel gibi çoğu birçok yapıda sonsuz yönlendirme hatasına neden olmaktadır. Eğer Cloudflare’in ücretli hesabı kullanılırsa bu sorun ortadan kalkar. Bunun haricinde bu sorunu programlama yoluyla çözebilirsiniz. Anahtar kelimemiz: Laravel TrustedProxy