Aynı SQL sorgusunu kullanarak, ne yazık ki, bildiğim kadarıyla söyleyebilirim, pek mümkün görünmüyor ...
About your idea of going through the database to extract informations about each table to generate some PHP classes, that's one of the things that Doctrine (the most famous PHP ORM) does.
Bunu indirebilir ve Doctrine/Import/[DatabaseType].php
sınıfların bir göz atacak olursak, bu veritabanı her tür için farklı yapılır göreceksiniz.
Örneğin, MySQL için, aşağıdaki kod parçası kullanılır Doctrine_Import_Mysql
:
'listTableFields' => 'DESCRIBE %s',
Öte yandan, PostgreSQL için, size aşağıdaki var içinde Doctrine_Import_Pgsql
ettik:
'listTableColumns' => "SELECT
a.attnum,
a.attname AS field,
t.typname AS type,
format_type(a.atttypid, a.atttypmod) AS complete_type,
a.attnotnull AS isnotnull,
(SELECT 't'
FROM pg_index
WHERE c.oid = pg_index.indrelid
AND a.attnum = ANY (pg_index.indkey)
AND pg_index.indisprimary = 't'
) AS pri,
(SELECT pg_attrdef.adsrc
FROM pg_attrdef
WHERE c.oid = pg_attrdef.adrelid
AND pg_attrdef.adnum=a.attnum
) AS default
FROM pg_attribute a, pg_class c, pg_type t
WHERE c.relname = %s
AND a.attnum > 0
AND a.attrelid = c.oid
AND a.atttypid = t.oid
ORDER BY a.attnum",
O kadar kolay değil, bu ^ ^ görünüyor
And, farther down each class, there is a method called listTableColumns
-- which is not the same for each database type...
Yani bir şeyler tahmin ediyorum, ne yazık ki, size umut kadar basit olmayacak ...
Ama, bir dipnot düşmek gibi: belki size proje bu bölümü için Doktrini kullanabilirsiniz - tekerleği yeniden icat ;-) daha hızlı olabilir