4

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

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

问题是:

1)如何从数据库中获取所有表名?

2)以及如何从表中获取所有列名?

我尝试了一些文章和论坛,例如http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/ 但它不起作用。

任何帮助,将不胜感激。

谢谢

4

4 回答 4

16

这很简单,使用CDbTableSchema类的实例:

echo 'Name: ', $tbl->name, ' (raw: ', $tbl->rawName, ')';
echo 'Fields: ', implode(', ', $tbl->columnNames);

等等。这有很多方法和属性
要获取所有表,只需使用CDbSchema文档here

该类CDbSchema具有公共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);

请花一些时间阅读手册,它都在那里。我没有Yii广泛使用它,好吧,我根本没有使用它,说实话,但我只花了 5 分钟就解决了这个问题。只看源码!每个方法/类/属性都有指向相应文件中确切行的链接!
在要求别人为您解决问题之前,请付出一些努力

于 2013-09-04T08:11:38.113 回答
4

从表中获取所有列名:

TableName::model()->getTableSchema()->getColumnNames();

它将返回一个包含 TableName 的所有列名的数组。

于 2014-10-06T12:37:48.720 回答
0

要获得表和列都参考这个答案,我在下面粘贴了示例代码,请访问该答案以获得更多解释。

$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/>';
  }
于 2020-04-10T13:27:48.840 回答
0

获取所有列名和标签:

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

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

于 2017-01-05T06:11:28.527 回答