php - Yii Framework 如何从数据库中获取所有表名和列名

标签 php yii

我正在开发一个模块,我想在其中执行动态相关的下拉表和列名功能。

例。获取所有表名并将其显示在下拉字段中,在选择特定表后我想在下拉字段中再次显示其所有列名。

问题是:

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
要获取所有 表,只需使用CDbSchemadocs 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/

相关文章:

php - 查找 2 个日期之间的差异并根据差异迭代图像

php - 如何在选择中嵌入选择或从选择中调用另一个函数?

php - 我无法让表单数据进入数据库。我究竟做错了什么?

PHP和MySql的麻烦

php - Yii2 - 如何列出文件夹内的文件

php - Jquery刷新div

php - 将上传的视频公开在 YouTube 上

php - 在 YII 中使用 ExtJS

yii - PHPUnit 和 Yii 错误需要 *.php 文件

php - 如何在 yii 中运行 giix 扩展