我正在开发一个模块,我想在其中执行动态相关的下拉表和列名功能。
例。获取所有表名并将其显示在下拉字段中,在选择特定表后我想在下拉字段中再次显示其所有列名。
问题是:
1) 如何从数据库中获取所有表名?
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);
等等。 There's a lot of methods and properties for this
要获取所有 表,只需使用CDbSchema
类docs here .
CDbSchema
类同时具有公共(public)tableNames
属性(所有 tbl 名称的数组)和 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 !每个方法/类/属性都有指向相应文件中确切行的链接!
在要求他人为您解决问题之前,付出一些努力。
关于php - Yii Framework 如何从数据库中获取所有表名和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18608531/