private tablo oluşturma / Symfony Framework

Private Tablo Oluşturma

private tablo oluşturma

Fluent NHibernate İle Otomatik Tablo Oluşturmak

Fluent NHibernate ile oluşturmuş olduğumuz Map sınıflarını database üzerinde otomatik olarak tablo oluşturmak istersek NHibernateHelper sınıfı içerisinde ufak bir ekleme yapmamız gerekecektir. NHibernateHelper sınıfına daha önce anlatmış olduğum NHibernate bağlantı makalelerinden ulaşabilirsiniz.
Düzenlemeden önceki InitializeSessionFactory() metodunun içeriği aşağıdaki gibidir.
private static void InitializeSessionFactory() { _sessionFactory = seafoodplus.infoure().Database(seafoodplus.info .ConnectionString(@"Server=ServerAdi;initial catalog=DatabaseAdi; user=KullaniciAdi;password=Parola;").ShowSql()) .Mappings(m => seafoodplus.infomAssembly(typeof(Program).Assembly)) .BuildSessionFactory(); }
Otomatik oluşturma işlemi için aşağıdaki kod parçasını metodumuza ekliyoruz.
ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
Metodumuzun son hali aşağıdaki gibi olacaktır.
private static void InitializeSessionFactory() { _sessionFactory = seafoodplus.infoure().Database(seafoodplus.info .ConnectionString(@"Server=ServerAdi;initial catalog=DatabaseAdi; user=KullaniciAdi;password=Parola;").ShowSql()) .Mappings(m => seafoodplus.infomAssembly(typeof(Program).Assembly)) .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true)) .BuildSessionFactory(); }
Bu işlemden sonra InitializeSessionFactory() metoduna ilk erişim sağlandığında database üzerinde otomatik olarak tablolar oluşacaktır. Burada şöyle birşey ile karşılaşacaksınız. Output ekranından izlerseniz, uygulamanızı her yeni başlattığınızda ve InitializeSessionFactory() metoduna ilk ulaştığınızda database üzerinde bulunan tabloların silinip tekrar oluşturulduğunu göreceksiniz.
Aşağıdaki yöntemi kullanırsanız varolan tablolarınız silinmez ve yapmış olduğunuz değişiklikler (yeni bir tablo ya da bir tablo içine yeni bir alan eklediğinizde) database üzerine uygulanır.
private static void InitializeSessionFactory() { _sessionFactory = seafoodplus.infoure().Database(seafoodplus.info .ConnectionString(@"Server=ServerAdi;initial catalog=DatabaseAdi; user=KullaniciAdi;password=Parola;").ShowSql()) .Mappings(m => seafoodplus.infomAssembly(typeof(Program).Assembly)) .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true)) .BuildSessionFactory(); }

Başarılar dilerim.

Privacy Policy Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Mozilla Public License v “LibreOffice” and “The Document Foundation” are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy. LibreOffice was based on seafoodplus.info

Symfony Framework yapısı içinde veritabanları ile işlem yapmak üzere bir bileşen bulunmamaktadır. Veritabanı işlemleri Doctrine adlı bir üçüncü parti kitaplığı yoluyla yapılır. Doctrine kitaplığını kullanarak, veritabanı işlemlerini kolay ve esnek bir şekilde gerçekleştirebilirsiniz.

Doctrine Projesi, öncelikle veritabanı depolaması ve nesne haritalaması üzerine odaklanan birkaç PHP kütüphanesinden oluşmaktadır. Temel projeler, Object Relational Mapper (ORM) ve Database Abstraction Layer (DBAL)'dır.

Şimdi, Doctrine kütüphanesinde veritabanı işlemlerinin çalışma şeklini görmek için, veritabanı yapılandırma, bir tablo nesnesi oluşturma, tablo yapısını veritabanına aktarma ve girilen değerleri tablodan okuma işlemlerini gerçekleştireceğiz.

Veritabanı işlemlerine başlamadan önce, app/config/seafoodplus.info dosyasında bulunan veritabanı bağlantı bilgilerinizi yapılandırmanız gerekir. Aşağıdaki bilgileri içeren bir seafoodplus.info dosyası, Ahmet adlı bir kullanıcı tarafından işlem yapılabilecek mysymfony adlı bir veritabanı dosyası oluşturulmasını sağlayacaktır:

Doctrine yapılandırılırken, seafoodplus.info dosyasındaki değerler, temel yapılandırma dosyası olan app/config/seafoodplus.info tarafından kullanılır:

C:\wamp\bin\mysql\mysql klasöründe bulunan seafoodplus.info dosyasında [mysqld] ifadesinin altına aşağıdaki satırları ekleyerek, MySQL UTF8 kod düzenlemesini yapabilirsiniz:

Ayrıca, veritabanını oluşturmadan önce, Doctrine için kullanılacak olan ön tanımlı SQL karakter setini belirlemek için, app/config/seafoodplus.info dosyasında aşağıda renkli olarak gösterilen değerleri değiştirebilirsiniz:

Artık, Doctrine veritabanınıza bağlandığından, aşağıdaki komut otomatik olarak boş ve mysymfony adlı bir veritabanı oluşturur:

php bin/console doctrine:database:create

Komut istemi penceresinde, yukarıdaki komutu yazıp ENTER tuşuna bastığınızda, aşağıdakine benzer bir ekran karşınıza gelecektir:

mysymfony adlı veritabanını oluşturulduğunu phpMyAdmin benzeri bir arayüzle kontrol edebilirsiniz:

Symfony'de Entity verileri ve verilerle ilgili metodları (fonksiyonları) barındıran bir sınıftır. Örneğin, bir tabloyu oluşturacak verileri ve metodları Entity yoluyla oluşturabilirsiniz.

1. Aşağıdaki komut, mysymfony adlı veritabanımızda bir tablo oluşturmamızı sağlayacak bir sınıf oluşturur:

php bin/console doctrine:generate:entity

2. Komut isteminde iken, yukarıdaki komutu yazdığınızda, Entity kısayol adı girilecek olan bir ekran görüntüsü gelir. Bu ekranda, AppBundle:Product ifadelerini girip ENTER tuşuna basarak, product adlı bir tablo oluşturabilirsiniz.

3. Bu kez, yapılandırma şeklini girmeniz gereken bir görüntü ekrana gelir. Burada, ön tanımlı değer olan annotation değerini seçmek ENTER tuşuna basınız.

4. Boş bir Entity oluşturmuş olduk. Artık, tablomuz için alan değerleri ekleyebiliriz.

Bu işlemleri yaparken, id adlı bir alan tablo yapısına otomatik olarak eklenecektir.

Aynı zamanda, tablo veri alanlarında kullanılabilecek tüm veri türleri ekrana gelir. Ekranda, tablonuzda yer almasını istediğiniz ilk alan adını name olarak girdiğinizde, alan veri türünü belirlemenizi sağlayan bir görüntü (Field type [string]:) ekrana gelir. Ön tanımlı değer olan ve köşeli parentezler içinde yer alan string değerini seçmek ENTER tuşuna basınız. Alan uzunluğu giriş değeri ekrana geldiğinde (Field length []:), değerini girin ve ENTER tuşuna basınız. Veri alanına değer girişi gerekliliğini belirleyen giriş ekranı (Is nullable [false]:) geldiğinde, ön tanımlı değeri seçmek için ENTER tuşuna basınız. Veri alanı değerinin benzersiz olma özelliğini belirleyen giriş ekranı (Unique [false]:) geldiğinde, true değerini girin ve ENTER tuşuna basınız.

İkinci alan adını price olarak girdiğinizde, alan veri türünü belirlemenizi sağlayan bir görüntü ekrana gelir. Burada, decimal yazarak ENTER tuşuna basınız. Ondalıklı sayının toplam basamak sayısını belirleyen ve köşeli parentezler içinde yer alan ön tanımlı değer olan 10 değerini (Precision [10]) seçmek ENTER tuşuna basınız. Ondalıklı sayıda virgülden sonra yer alan ve ondalık kısım değeri için (Scale:) 2 değerini girin ve ENTER tuşuna basınız. Veri alanına değer girişi gerekliliğini belirleyen giriş ekranı (Is nullable [false]:) geldiğinde ve veri alanı değerinin benzersiz olma özelliğini belirleyen giriş ekranı (Unique [false]:) geldiğinde, ön tanımlı değeri seçmek için ENTER tuşuna basınız.

Üçüncü alan adını description olarak girdiğinizde, alan veri türünü belirlemenizi sağlayan bir görüntü ekrana gelir. Burada, text yazarak ENTER tuşuna basınız. Veri alanına değer girişi gerekliliğini belirleyen giriş ekranı (Is nullable [false]:) geldiğinde ve veri alanı değerinin benzersiz olma özelliğini belirleyen giriş ekranı (Unique [false]:) geldiğinde, ön tanımlı değeri seçmek için ENTER tuşuna basınız.

Tabloya veri alanı eklemeyi sona erdirmek için, yeni alan adı girmeden ENTER tuşuna basınız.

Böylece, tablomuzu oluşturmak için gerekli olan Entity sınıfını oluşturmuş olduk. Bu işlemle birlikte, aşağıdaki şekilde görülen Entity dizini ve içindeki seafoodplus.info dosyası ile Repository dizini ve içindeki seafoodplus.info dosyası otomatik olarak oluşturulur.

Oluşturulan seafoodplus.info ve seafoodplus.info dosyalarının içerikleri aşağıda yer almaktadır:

seafoodplus.info dosyasında, Product adlı bir sınıf oluşturulmuş, bu sınıf içinde ise $id, $name, $price ve $description adlı 4 adet değişken ve her bir değişken için biri değişken değerini almak diğeri ise değişken değerini belirlemek için ikişer adet fonksiyon tanımlanmıştır.

Tablo oluşturmak için bir Entity sınıfı oluşturulmuş olmasına rağmen, henüz bir tablo oluşturulmadığına dikkat ediniz!

Aşağıdaki komut, seafoodplus.info dosyasında bulunan sınıf bilgilerini kullanarak mysymfony veritabanı altında product adlı bir tablo oluşturur:

php bin/console doctrine:schema:update --force

Oluşturulan ve herhangi bir veri girişi yapılmamış product tablosunu, phpMyAdmin benzeri bir arayüzle kontrol edebilirsiniz:

1. Öncelikle, veritabanına giriş yapmak kullanacağımız web sayfası için menüde bir giriş oluşturalım. Bunun için, C:\wamp\www\mysym\app\Resources\views dizini altında bulunan seafoodplus.info dosyasını aşağıdaki hale getirerek kaydedin.

2. Ürün girişini sağlayacak ve girilen ürün bilgilerini ekranda gösterecek bir sayfaya yönlendirmek amacıyla bir Route oluşturmak için seafoodplus.info dosyasını aşağıdaki hale getirerek kaydedin.

Yukarıda oluşturduğumuz newAction adlı Action (Fonksiyon) , Product sınıfından $product adlı bir nesne ouşturur ve sınıf içindeki fonksiyonları (metodlar) kullanarak sınıf içindeki değişkenlere birer değer atar.

komutu ile, Doctrine'in veritabanına nesne kaydetme ve veritabanından nesne alma işlemlerini yöneten Entity Manager uygulamasını çağırır.

persist($product) komutu ile, Doctrine'e $product nesnesini yöneteceğini bildirir.

flush() komutu ile, Doctrine $product nesnesini veritabanına kaydederek, product tablosuna bir satır ekler.

En son satırda ise, kaydı girilen ürünün bilgilerini bir dizi ile seafoodplus.info dosyasına aktarır.

3. Verileri ekranda gösterecek olan web sayfası şablonunu oluşturmak için, daha önce, myview dizininin altında oluşturduğunuz seafoodplus.info adlı dosyanın içeriğini kopyalayarak yeni bir dosyaya yapıştırın. Dosya içeriğini aşağıdaki hale getirdikten sonra seafoodplus.info adı ile kaydedin:

Sonuç olarak, myview dizin içeriği aşağıdaki şekilde oluşacaktır:

Aşağıdaki şekilde yer alan Ürün girişi menü seçeneğine tıkladığınızda, aşağıdakine benzer bir ekran görüntüsü karşınıza gelecektir:

product adlı tabloya eklenen kaydı phpMyAdmin benzeri bir arayüzle kontrol edebilirsiniz:

1. Veritabanından veri okumak C:\wamp\www\mysym\app\Resources\views dizini altında bulunan seafoodplus.info dosyasındaki Ürünler menü seçeneğini kullanabiliriz:

2. Veritabanında bulunan ürün bilgilerini ekranda gösterecek bir sayfaya yönlendirmek amacıyla, seafoodplus.info dosyası içinde, /urunlerRoute değeri için tanımlanmış productsAction()Action (Metod)'ı içinde aşağıdaki değişiklikleri yaparak kaydedin.

3. Verileri ekranda gösterecek olan web sayfası şablonunu oluşturmak için, daha önce, myview dizininin altında oluşturduğunuz seafoodplus.info adlı dosyanın içeriğini aşağıdaki şekilde değiştirdikten sonra kaydedin:

nest...

batman iftar saati 2021 viranşehir kaç kilometre seferberlik ne demek namaz nasıl kılınır ve hangi dualar okunur özel jimer anlamlı bayram mesajı maxoak 50.000 mah powerbank cin tırnağı nedir