如何在 Yii 框架中从数据库中获取所有表名和列名


How to get all table and column names from database in Yii Framework

我正在研究一个模块,我想在其中执行动态依赖下拉列表和列名功能。

例如,获取所有表名称

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

问题是:

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);

等等。有很多
方法和属性要获取所有表,只需在此处使用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 的所有列名的数组。

要同时获得表和列,请参阅此答案,我将示例代码粘贴到下面,请访问该答案以获取更多解释。

$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/>';
  }

获取所有列名和标签:

$fields=Tablename::attributeLabels();
foreach($fields as $key=>$value){
    echo "column name : ".$key." and label ".$value."<br/>";
}

它将显示来自模态的所有字段名称和标签值.....