Merhaba, bu yazımda soft delete ve foreign key ile birbirine bağlanan tablolarda cascade kullanımdan bahsedeceğim.
Delete işlemi veriyi, veri tabanından fiziksel olarak siler. Soft delete işleminde ise, veri yazılımsal olarak silinir. Tabloya deleted_at column'u eklenir. İnsert sırasında null bırakılan column, delete işlemi yapılırken zaman damgasıyla doldurulur. Bu sayede veri silme isteğini zamanıyla birlikte tutmuş oluruz. Deleted_at column dolu olan veri silinmiş sayılır ve sorgulara dahil edilmez.
Bu yazıda middleware konusundan bahsedeceğim. Middleware adından da anlaşılacağı üzere ara katman olarak kullanılan kod parçasıdır. Action çalışmadan önce yada sonra devreye girer. Diğer bir değişle, HTTP isteklerinin filtrelenmesi için kullanılır. Sayfayı görüntülemek isteyen kullanıcının login olup olmadığını bir middleware kontrol edip login işlemi gerçekleşmişse istek attığı sayfaya, login olmamışsa login sayfasına yönlendirebilirsiniz.
Benim gibi, yazılıma PHP 4 ile başlamışsanız, ilk kodlarınızı prosedürel olarak yazdıysanız. Yani PHP ile birlikte büyüdüyseniz, PHP 5 ile hayatımıza giren OOP'nın ne kadar kıymetli olduğunu bilirsiniz :)
OOP Nedir ?
OOP (Object Oriented Programming) Türkçe'si NYP (Nesne Yönelimli Programlama) aslında kullandığımız tüm framework'lerin alt yapısınında çalışan yapıdır. Yazılımcıların duplicate kod yazmasına engel olmak için bire birdir. Belirli bir iş için yazdınız kodu diğer projelere taşımanızı ve kullanmanızı kolaylaştırır.
JWT yani Json Web Token, sistemler arasında kimlik doğrulaması için kullanılan bir tekniktir. Kısaca örneklemek gerekirse server'dan servis ettiğiniz API olduğunu, mobil app ve web sitesi tarafından bu API kullanıldığını düşünün. Sisteme giriş yapan kullanıcıyı doğruladıktan sonra her istekte server tarafında kimlik doğrulaması yapmanız gerekecek. İşte JWT tam olarak burada devreye giriyor. Giriş yapan kullanıcıya bir token veriyorsunuz. Client sonraki tüm istekleri bu token ile birlikte yapıyor. Eskiden bu iş için session kullanıyorduk. Şimdi ise client'ların kullanıldığı platformlar çoğaldığı için üretilen verileri json olarak sunarak her platforma uyumlu şekilde çıktı veriyoruz. Dolayısı ile kimlik doğrulama sisteminin de güncel bir hal alması gerekiyordu ki tüm client'lar tarafından kullanılabilsin.
Bu yazıda Laravel’le yaptığınız bir uygulama da zamanlanmış görevlere ihtiyacınız olduğunda kullanılan bir teknikten bahsedeceğim. Diyelim ki saatte bir çalıştırmanız gereken bir kod blogunuz var. Linux sistemlerde Shell Script yazıp crontab’a ekleye bileceğiniz gibi bu işlemi Laravel’le de yapabilirsiniz. Lafı fazla uzatmadan başlayalım. İlk olarak işi yapacak command‘i oluşturalım. bunun için terminale aşağıdaki artisan komutunu yazın.
Transaction kısaca sıralı işlemlerdir. Bir biri ile ilişkili bir den fazla SQL çalıştıracağınız zaman kullanılır. Amaç sorgulardan birisinde sorun olursa ilişkili tüm sorguları geri çekmektir. Eğer bütün sorgular doğru çalıştıysa MySql'e işler. Transaction sadece MySql'de kullanılan bir teknik değildir. Hemen her veri tabanında mevcuttur. PHP veya Python tarafında ise testler sırasında girilen verilerin temizlenmesi için kullanılabilir.
Laravel ile yapılan projelerde bazen işlemleri kuyruklamak gerekebiliyor. Yapılacak işlemin sonucunu response dönmek gerekmiyorsa ve requests olağandan fazla ise işlemleri kuyruklamak gelen tüm request'leri işleyebileceğiniz anlamına gelir. Bir yandan gelen request'leri kuyruğa atarsınız diğer bir yandan ise sıra ile işlersiniz. Veriyi işlemek için yazdığınız kodu (Worker) çoklu şekilde çalıştırarak veri işleme hızınızı da arrtırabilirsiniz.
Queue işlemi basitçe şöyle çalışıyor. bir Job oluşturuyorsunuz. yapılacak işlemleri redisqueue atıyorsunuz. artisan work komutu ile queue ve Job'u belirterek verileri sırası ile işlemeye başlıyorsunuz.
Laravel ile geliştirdiğiniz projenizde bazı işlemlerin log'lanmasına ihtiyaç duyabilirsiniz. Kayıt oluşturma, düzenleme, silme gibi işlemlerin hangi kullanıcı tarafından gerçekleştiğini bilmek önemli. Bu işlem için ben activityLog kütüphanesi kullanıyorum. Kullanımı oldukça basit olmasına karşın oldukça iş görüyor. Lafı fazla uzatmadan nasıl kullanıldığına geçmek istiyorum.