我正在开发一个模块,我想做动态相关的下拉列表和列名称功能.
防爆.获取所有表名并在下拉字段中显示它,在选择特定表后,我想在下拉字段中再次显示其所有列名.
问题是:
1)如何从db获取所有表名?
2)以及如何从表中获取所有列名?
我尝试了很少的文章和论坛,如http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/, 但它不起作用.
任何帮助,将不胜感激.
谢谢
Eli*_*gem 16
使用CDbTableSchema类的实例非常简单:
echo 'Name: ', $tbl->name, ' (raw: ', $tbl->rawName, ')';
echo 'Fields: ', implode(', ', $tbl->columnNames);
Run Code Online (Sandbox Code Playgroud)
等等.这里有很多方法和属性
要获取所有表,只需在此处使用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/>';
}
Run Code Online (Sandbox Code Playgroud)
要创建下拉列表,只需使用标准CHtml对象:
$options = array();
foreach($tables as $tbl)
{//for example
$options[$tbl->rawName] = $tbl->name;
}
$dropDown = CHtml::dropDownList('tables',$tables[0]->rawName, $options);
Run Code Online (Sandbox Code Playgroud)
请花一些时间阅读手册,它就在那里.我没有Yii那么广泛地使用它,好吧,我没有使用它,说实话,但它只花了我5分钟来解决这个问题.只看源头!每个方法/类/属性都有一个指向相应文件中确切行的链接!
在要求别人为你解决问题之前,先付出一些努力.