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

时间:2013-09-04 08:06:44

标签: php yii

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

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

问题是:

1)如何从db获取所有表名?

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

我试过很少的文章和论坛,比如http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/ 但它不起作用。

任何帮助都将不胜感激。

由于

4 个答案:

答案 0 :(得分:16)

使用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类具有公共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);

请花一些时间Reading the manual,它就在那里。我还没有充分地使用Yii,好吧,我还没有使用过它,说实话,但我花了5分钟才完成这项工作。看看source!每个方法/类/属性都有一个指向相应文件中确切行的链接! 在要求其他人为您解决问题之前,付出了一些努力

答案 1 :(得分:3)

从表中获取所有列名:

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

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

答案 2 :(得分:0)

获取所有列名称和标签:

$fields=Tablename::model()->attributeLabels();
foreach($cont as $key=>$value){
    echo "column name : ".$key." and lable ".$value;
}

它将显示模态的所有fieldname和lable值.....

答案 3 :(得分:0)

要获取表和列,请参考This Answer,我在下面粘贴了示例代码,请访问该答案以获取更多说明。

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