Я работаю над модулем, где я хочу использовать динамическую зависимую выпадающую таблицу и имя столбца.
Ex. Извлеките все имена таблиц и отобразите их в раскрывающихся полях, а после выбора конкретной таблицы я хочу снова отобразить все имя столбца в поле выпадающего списка.
Проблемы:
1) Как получить все имя таблицы из db?
2) и как получить все имя столбца из таблицы?
Я пробовал несколько статей и форумов, таких как http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/, но не работал.
Любая помощь будет оценена по достоинству.
благодаря
Это довольно просто, используя экземпляр класса CDbTableSchema
:
echo 'Name: ', $tbl->name, ' (raw: ', $tbl->rawName, ')'; echo 'Fields: ', implode(', ', $tbl->columnNames);
И так далее. Для этого существует множество методов и свойств
Чтобы получить все таблицы, просто используйте здесь документы класса CDbSchema
.
класс CDbSchema
имеет как общедоступное свойство tableNames
(массив всех tbl namnes), так и свойство tables
, содержащее все метаданные. На самом деле все.
Чтобы добраться до всех этих экземпляров, достаточно следующего кода:
$connection = Yii::app()->db;//get connection $dbSchema = $connection->schema; //or $connection->getSchema(); $tables = $dbSchema->getTables();//returns array of tbl schema's foreach($tables as $tbl) { echo $tbl->rawName, ':<br/>', implode(', ', $tbl->columnNames), '<br/>'; }
Чтобы создать раскрывающийся список, вы просто используете стандартный объект CHtml
:
$options = array(); foreach($tables as $tbl) {//for example $options[$tbl->rawName] = $tbl->name; } $dropDown = CHtml::dropDownList('tables',$tables[0]->rawName, $options);
Пожалуйста, потратьте время на чтение руководства , все там. Я не использовал Yii
что широко, ну, я не использовал его вообще, если честно, но мне потребовалось всего 5 минут, чтобы это исправить. Просто посмотрите на источник ! У каждого метода / класса / есть ссылка на точную строку в соответствующем файле!
Прежде чем просить других разобраться в чем-то, приложите некоторые усилия .
введите имя столбца из таблицы:
TableName::model()->getTableSchema()->getColumnNames();
Он вернет массив, содержащий все имена столбцов TableName.
выберите все имя столбца и таблицу:
$fields=Tablename::model()->attributeLabels(); foreach($cont as $key=>$value){ echo "column name : ".$key." and lable ".$value; }
он отобразит все имя поля и значение lable из модального …..