我正在开发一个模块,我想在其中执行动态相关的下拉列表和列名称功能。
实施例。获取所有表名并在下拉字段中显示它,在选择特定表后,我想在下拉字段中再次显示其所有列名。
问题是:
1)如何从db获取所有表名?
2)以及如何从表中获取所有列名?
我试过很少的文章和论坛,比如http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/ 但它不起作用。
任何帮助都将不胜感激。
由于
答案 0 :(得分:16)
使用CDbTableSchema
类的实例
echo 'Name: ', $tbl->name, ' (raw: ', $tbl->rawName, ')';
echo 'Fields: ', implode(', ', $tbl->columnNames);
等等。 There's a lot of methods and properties for this
要获取所有表,只需使用CDbSchema
类docs here。
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);
请花一些时间Reading the manual,它就在那里。我还没有充分地使用Yii
,好吧,我还没有使用过它,说实话,但我花了5分钟才完成这项工作。看看source!每个方法/类/属性都有一个指向相应文件中确切行的链接!
在要求其他人为您解决问题之前,付出了一些努力。
答案 1 :(得分:3)
从表中获取所有列名:
TableName::model()->getTableSchema()->getColumnNames();
它将返回一个包含TableName所有列名的数组。
答案 2 :(得分:0)
获取所有列名称和标签:
$fields=Tablename::model()->attributeLabels();
foreach($cont as $key=>$value){
echo "column name : ".$key." and lable ".$value;
}
它将显示模态的所有fieldname和lable值.....
答案 3 :(得分:0)
要获取表和列,请参考This Answer,我在下面粘贴了示例代码,请访问该答案以获取更多说明。
$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/>';
}