4

動的依存ドロップダウン テーブルと列名機能を実行するモジュールに取り組んでいます。

元。すべてのテーブル名を取得してドロップダウン フィールドに表示し、特定のテーブルを選択した後、すべての列名をドロップダウン フィールドに再度表示したいと考えています。

問題は次のとおりです。

1) db からすべてのテーブル名を取得する方法は?

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

この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分しかかかりませんでした. ソースを見てください!すべてのメソッド/クラス/プロパティには、対応するファイルの正確な行へのリンクがあります!
他の人に何かを考えてもらう前に、ある程度の努力をしてください。

于 2013-09-04T08:11:38.113 に答える
4

テーブルからすべての列名を取得します。

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

TableName のすべての列名を含む配列を返します。

于 2014-10-06T12:37:48.720 に答える