2014-09-20 1 views
0

Есть ли способ получить все имена столбцов, а затем выяснить, какой тип столбца? Например, ENUM, VARCHAR, TINYINT и т. Д., В частности, для ENUM - разные компоненты ENUM?PHPActiveRecord Найти имена столбцов и типы и в частности компоненты ENUM

я нашел что-то здесь (http://www.phpactiverecord.org/docs/ActiveRecord/Column)

Не знаете, как получить тип, хотя из этой документации?

+0

Ответ byte255 очень близок, мне нужно только выяснить значения ENUM, а не просто возвращать тип ENUM. –

ответ

2

Чтобы получить список имен столбцов и их типы:

$columns = MyModel::table()->columns; 
foreach ($columns as $column) { 
    echo "{$column->name} - {$column->raw_type} <br>\n"; 
} 

Где MyModel это название вашей модели класса.

Это выведет «сырой» тип базы данных, как определено в схеме БД. Вы можете также использовать $column->type для нормализованного типа в внутреннем представлении ActiveRecord.

Просмотреть источник AR here и here.

+0

Спасибо за ваш ответ! Это отлично работало и помогает до сих пор. Я понял, что значение ENUM ... но я, к сожалению, не получил значений, составляющих ENUM. Допустим, ENUM состояла из таких значений, как «Да», «Нет», «Может быть», мне нужно выяснить, что это такое. –

+0

В отличие от текущего ответа, который просто возвращает ENUM. Тем не менее, это отличное начало для меня, чтобы изучить. * - забыли добавить это в последний комментарий. –

+0

@JosephAstrahan К сожалению, PHP ActiveRecord не анализирует значения ENUM, [см. Источник] (https://github.com/jpfuentes2/php-activerecord/blob/master/lib/adapters/MysqlAdapter.php#L33). Таким образом, список доступных значений не существует. Однако вы можете опубликовать инструкцию SHOW COLUMNS и самостоятельно проанализировать значения ENUM, см. [Этот ответ] (http://stackoverflow.com/questions/2350052/how-can-i-get-enum-possible-values-in-a -mysql-база). – byte255