2016-04-06 27 views
0

Veritabanı modeli sınıfları şema değiştiğinde kendilerini yükseltecek kadar akıllı olan bir PHP çerçevesiyle çalışıyorum. Tek yapmamız gereken şeylerden biri genişletmek çünkü en son döngüsünde bir çıkmaza girdi ettikVeritabanı sütununun özelliklerini PHP'de alabilir miyim?

I am version 4. 

function UpgradeVersion() 
{ 
    If the DB doesn't yet have a column "foo" in this table, 
     I'm version 1. Add the "foo" column. 
    If the DB doesn't yet have a column "bar" in this table, 
     I'm version 2. Add the "bar" column. 
    If the DB still has a deprecated "fargle" in this table, 
     I'm version 3. Rename "fargle" to "gargle". 
    I'm now up to version 4. 
} 

: Bunlar aşağıdaki pseudocode benzer denetimlerine ilişkin liste geçerek, kısmen Bunu yapmak Önceki sürümde yanlış oluşturulan bir sütunun boyutu. Bu nedenle, modelin kendisini doğru bir şekilde yükseltmesi için, yalnızca bir sütunun varlığı için bir çeke dayalı olarak yükseltmeye karar veremez; sütunun güncel biçimini bilmek ve hala çok kısa olup olmadığını anlamak zorundadır.

PHP ve PDO belgelerini inceledim, ancak bu bilgiyi güvenilir bir şekilde almak için deneysel olmayan, kullanım dışı bir yol bulamadı. Kararsızlığı düşünebildiğim tek hack, orijinal uzunluğundan daha uzun ama yeni olandan daha kısa olan bir ekleme denemek ve ardından sonucu seçmek olurdu; kesilirse, sütun çok kısadır ve yükseltmeye ihtiyacı vardır. Bu ideal görünmüyor, bu yüzden daha iyi alternatifler için buraya dökülüyorum.

+0

hakkında bilgi verecektir MySQL statment DESCRIBE myTable; kullanabilirsiniz, sen information_schema kullanabilirsiniz. Bkz. Https://dev.mysql.com/doc/refman/5.0/en/information-schema.html – user498023

+1

'Tablodan CUMHURİYETİ GÖSTER 'muhtemelen büyük olasılıkla yardımcı olacaktır. http://dev.mysql.com/doc/refman/5.7/en/show-columns.html – CollinD

cevap

2

MySQL'deki her sütun

+0

Oldukça emin 'bet' [SQL 92] 'dir (http://www.contrib.andrew.cmu.edu/~ gölge/sql/sql1992.txt) standart. Bunu desteklemeyen bir RDBMS'ye aşina değilim. – ficuscr

+0

'DESCRIBE', MySQL – cmorrissey

+0

’da' SHOW COLUMNS FROM' kelimesinin eşanlamlısıdır. Örgü seçiminde DESCRIBE ve EXPLAIN’ın eşanlamlı olduğunu söyleyebilirim. MySQL referans durumu: "DESCRIBE ifadesi SHOW COLUMNS'a benzer bilgiler sağlar." – ficuscr

İlgili konular