Top-Tier Software & Product Development Company - We’re your next tech partner, delivering innovative projects, AI solutions, and digital transformation for your business.
Top-Tier Software & Product Development Company - We’re your next tech partner, delivering innovative projects, AI solutions, and digital transformation for your business.
Laravel MigrationSelamlar, bu yazımda sizlere Laravel de migration yapısını, basit ve örnekli şekilde anlatacağım.Laravel Migration Nedir?Laravel Migration, Laravel de kod aracalığıyla veritabanınızda bir tablo oluşturmanıza ve bu tablolarınızı düzenlemenize olanak sağlayan yapıdır.Laravel geliştiricilerin veritabanı değişikliklerini yönetmelerine yardımcı olan bir özelliktir. SQL ifadelerini manuel olarak yazmaya gerek kalmadan sütun, tablo veya dizin ekleme veya kaldırma gibi veritabanı değişikliklerini işlemek için kullanılan yöntemdir.Laravel Migration Nasıl Kullanılır ?Migration dosyaları 2 adet fonksiyondan oluşmaktadır. Bu fonksiyonların ilki “up” fonksiyonudur. Bu fonksiyon migration dosyası tetiklendiğinde çalışıp içinde Schema classının yönlendirmesiyle verilen oluşturma ya da güncelleme işlemlerini gerçekleştiren fonksiyondur. Diğer fonksiyonumuz ise “down” fonksiyonudur. Bu fonksiyon ise çalıştırdığımız migrationu geri almak istediğimizde çalışacak fonksiyondur. Bir örnek vermek gerekirse bir tabloya sütun ekledik fakat yanlış bir güncellemeye sebep olduk. Bunun için down fonksiyonu içinde tam tersi işlemleri yapıp çalıştırabiliriz. Fakat prod database’lerde bu işlemler sakıncalı olacağı için bu durumları nasıl yönetmemiz gerektiğini makalenin ilerleyen kısımlarında anlatacağım.Şimdi kısaca migration dosyalarının içeriğinden bahsedeyim. Öncelikle migration dosyaları nasıl oluşturulur ?Adım 1: Migration Oluşturmaphp artisan make:migration create_teams_tableBu komut, database/migrations klasörüne aşağıdaki migration dosyasını ekler. Aşağıdaki ekran görüntüsünde olduğu gibi id ve timestamps sütunları default olarak dosya oluşturulurken gelmektedir.Peki oluşturduğumuz bu dosyayı nasıl düzenleyeceğiz ?Adım 2: Migration Dosyasını DüzenlemeOluşturulan migration dosyasını düzenleyerek, veritabanında yapmak istediğiniz değişiklikleri tanımlayabilirsiniz.Örnek olarak yukarıda oluşturduğumuz teams tablosuna bazı sütunları ekleyelim.Burada tablo yeni oluşacağı için Schema classının create fonksiyonu kullanıyoruz. Yukarıda olduğu gibi sütunumuzun hangi değerde veriler barındıracağını belirtip daha sonra ismini belirtiyoruz. İlişkisel sütunlar kullanmak istediğimizde foreignId şeklinde belirterek ve sonuna constrained ekleyerek migration çalışırken otomatik olarak bu sütunun coachs tablosunda ki id ye bakacağını belirtmiş oluyoruz. Aynı şekilde nullable olmasını istediğimiz sütunlarıda nullable()fonksiyonuyla belirtebiliyoruz.Düzenlediğimiz dosyayı nasıl çalıştırabiliriz ?Adım 3: Migration’ı ÇalıştırmaMigration dosyalarımızı çalıştırmadan önce php artisan migrate:status komutuyla kontrol edebiliriz. Bu komutu çalıştırdığımda aşağıda ki gibi bir çıktı ile karşılaşacağız. Burada daha önce çalıştırdığımız migration dosyalarımız ve bekleyen migration dosyalarımızı görmekteyiz.Daha sonrasında ise bekleyen migrationlarımızı çalıştırmak için aşağıdaki komutu kullanabiliriz.php artisan migrateBu komut, tüm bekleyen migration’ları sırayla çalıştırır ve veritabanınızı günceller. Eğer bu komutu sonuna :fresh ekleyerek çalıştırırsanız tüm veritabanınızı sıfırdan migrate etmenizi sağlar.Laravel Migration Kullanırken Dikkat Edilmesi Gereken Noktalar Nelerdir ?Eski migration dosyalarını güncellemek: Migration dosyaları bir kere çalışmak üzerine tasarlanmıştır. Çalışan bir migration dosyası tekrardan düzenlenmemeli. Bunun yerine düzenlemek veya eklenmek istenen alan yeni bir migration dosyası açılarak Schema classının table fonksiyonu ile mevcut tablo belirtilip gerekli işlemler yapılmalıdır.Down Metodu: Her migration dosyasında bir down metodu olmalıdır. Bu metod, bir migration geri alındığında yapılacak işlemleri tanımlar. Fakat production database’lerde geri alma işlemi uygulanmaz. Bunun yerine yeni bir migration açarak düzenlemek istediğimiz tabloyu burada düzenleyerek tekrardan çalıştırarak migration yapısını ileri yönde kullanmamız gerekir.İsimlendirme: İsimlendirmeler, bir migration dosyasının ne yaptığını açık bir şekilde belli etmelidir. Çünkü migration yapısında çok fazla dosyayla çalışma ihtimaliniz yüksek olacağından bu belirti dosyalar arasında rahat ayrıştırma sağlayacaktır. Örneğin mevcut bir games tablomuz olsun. Ve biz bu tabloya bir adet referee kolonu eklemek isteyelim. Oluşturacağımız dosyanın adı yukarıda bahsettiğimiz gibi yapılan işlemi açıkça belirtmelidir. Yani dosya ismimiz add_referee_column_on_games_table olmalıdır.Tips and tricksModel yaratırken “-m” komutuyla otomatik olarak migrationıda yaratabilirsiniz.php artisan make:model Game -m2. Tablo/Sütun varlığını şu şekilde kontrol edebilirsiniz:if (Schema::hasTable('games')) { // games tablosu mevcut mu kontrolü yapar}if (Schema::hasColumn('games', 'rank')) { // games tablosunda rank kolonu var mı kontrolü yapar.}3. Tablo güncellerken grup olarak eklemek istediğiniz kolonları aşağıdaki gibi ekleyebilirsiniz:Schema::table('games', function (Blueprint $table) { $table->after('rank', function ($table) { $table->string('last_match_score'); $table->string('last_match_team_id'); $table->string('last_match_city_id'); });});Laravel Migration Nedir? was originally published in Moneo on Medium, where people are continuing the conversation by highlighting and responding to this story.
MySQL’de tarihleri yaşa çevirmek için kullanabileceğiniz farklı yöntemler vardır. Bu yazıda, MySQL’de tarihleri gün ve ay değerlerini de dikkate alarak yaşa çevirmenin çeşitli yollarını inceleyeceğiz.Yaş bilgisi, her gün değişen bir veri olduğu için tarih bazlı bir kolon, yaşın her an doğru ve güncel bir şekilde hesaplanmasını sağlayarak daha esnek bir çözüm sunar.🔹 TIMESTAMPDIFFİnceleyeceğimiz yöntemler arasında, tarih farkını hassas bir şekilde hesaplamakta ve genellikle kullanım kolaylığı ve doğruluk açısından tercih edebileceğiniz en iyi yöntemdir.SELECT TIMESTAMPDIFF(YEAR, birthday, NOW()) AS ageFROM customers;Bu sorguda TIMESTAMPDIFF fonksiyonu, iki tarih arasındaki farkı belirli bir birimde hesaplamamıza olanak tanır. İlk parametre de farkı hangi birimde hesaplayacağımızı belirtiyoruz (burada yıl). İkinci parametre de hangi kolon için hesap yapacağımızı ve son olarak da hangi tarihten çıkaracağımızı belirterek aradaki yıl farkını bulmuş oluyoruz bu sayede kişinin yaşını elde ediyoruz.🔹DATEDIFFBu yöntemde, elde edilen gün sayısını 365'e bölmek bazı durumlarda yanıltıcı olabilir çünkü her yıl 365 gün değildir.Bu nedenle, bu basit bölme işlemiyle elde edilen yaş bilgisi, gerçek yaş ile tam olarak uyuşmayabilir. Bu durumu göz önünde bulundurarak, bu yöntemi kullanırken dikkatli olunmalıdır.SELECT FLOOR(DATEDIFF(NOW(), birthday)/365) AS ageFROM customers;DATEDIFF fonksiyonu, iki tarih arasındaki gün farkını sağlar. Elde edilen gün farkı daha sonra 365'e bölünerek yıla çevrilir. FLOOR fonksiyonu kullanılarak ondalık kısmı atılır ve kişinin yaş bilgisi elde edilmiş olur.🔹 TO_DAYSBu yöntemde de bir önceki örnekteki gibi 365'e bölmek bazı durumlarda yanıltıcı olabilir.SELECT FLOOR((TO_DAYS(NOW()) - TO_DAYS(birthday)) / 365) AS ageFROM customers;TO_DAYSfonksiyonu kullanarak yapılan bu yöntemde, birthdayve şu anki tarih yani NOW()arasındaki gün farkı hesaplanır. Ardından bu fark, 365'e bölünerek yaşa çevrilir.🔹 DATE_FORMAT ve FROM_DAYSBu karmaşık yöntemde, yaş bilgisini elde etmek için kullanılabilir ama diğer yöntemlere göre daha fazla adım içermektedir. Önceki yöntemde kullanılan 365'e bölme işleminden farklı olarak, bu yöntem daha doğru bir sonuç sağlayabilir,SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), birthday)), '%Y')+0 AS ageFROM customers;Bu sorguda DATEDIFF ile bulunan gün farkı, FROM_DAYS ile bir güne çevrilir ve ardından DATE_FORMAT fonksiyonu ile yıl formatına dönüştürülür. Sonuç olarak kişinin yaş bilgisi elde edilir.Örneğin bugünün tarihini 13 mart olarak düşünürsek tüm bu yöntemlerin çıktısı şu şekilde gözükecektir.Bu yazıda, MySQL’de tarihleri ay ve gün değerlerini de dikkate alarak yaşa çevirmek için kullanılabilecek çeşitli yöntemleri inceledik. Hangi yöntemin sizin durumunuza daha uygun olduğunu belirlemek için her birini kendi tablonuz üzerinden test edebilirsiniz. Bu yöntemler dışında kullandığınız yöntemleri yorumlarda belirtebilirsiniz. 🐬MySQL’de Tarihleri Yaşa Çevirme Yöntemleri was originally published in Moneo on Medium, where people are continuing the conversation by highlighting and responding to this story.