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

00jrzges  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(154)

我正在一个模块上工作,我想做动态依赖下拉表和列名功能。
例如,提取所有表名并在下拉字段中显示它,在选择特定表后,我想在下拉字段中再次显示它的所有列名。
这些问题是:
1)如何从数据库中提取所有表名?
2)以及如何从表中获取所有列名?
我尝试了一些文章和论坛,如http://www.yiiframework.com/forum/index.php/topic/5920-how-can-i-get-the-actual-full-table-name/,但它不工作。
任何帮助都将不胜感激。
谢谢

nnt7mjpx

nnt7mjpx1#

使用CDbTableSchema类的一个示例,这非常简单:

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

等等。
要获取 * 所有 * 表,只需使用CDbSchemadocs here
CDbSchema类有两个公共的tableNames属性(一个所有表名的数组)和一个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分钟就解决了这个问题。看看source吧!每个方法/类/属性都有一个链接,指向相应文件中的确切行!
在要求别人帮你解决问题之前,* 要付出一些努力 *。

fnvucqvd

fnvucqvd2#

从表中提取所有列名:

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

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

wfsdck30

wfsdck303#

为了获得表和列引用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/>';
  }
t8e9dugd

t8e9dugd4#

提取所有列名和标签:

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

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

相关问题