2017-01-30 1 views
1

las ich von hier:
http://www.yiiframework.com/doc-2.0/yii-db-mysql-schema.html#findUniqueIndexes()-detailYii2 MySQL - Wie benutzt man die Methode findUniqueIndexes?

findUniqueIndexes() gibt alle eindeutigen Indizes für die angegebene Tabelle.


Hier ist, was ich bisher tat:

$table = \Yii::$app->db->schema->getTableSchema('my_tbl'); 

$dbSchema = new \yii\db\mysql\Schema(); 

$uniqueKeys = $dbSchema->findUniqueIndexes($table); 

Aber ich habe diesen Fehler:

Exception 'Error' with message 'Call to a member function createCommand() on null' 

in /media/yahya/Data/my-projects/yii2-api-template-dev/vendor/yiisoft/yii2/db/mysql/Schema.php:232 

Stack trace: 
#0 /media/yahya/Data/my-projects/yii2-api-template-dev/vendor/yiisoft/yii2/db/mysql/Schema.php(322): yii\db\mysql\Schema->getCreateTableSql(Object(yii\db\TableSchema)) 
#1 /media/yahya/Data/my-projects/yii2-api-template-dev/console/controllers/RevmigrateController.php(103): yii\db\mysql\Schema->findUniqueIndexes(Object(yii\db\TableSchema)) 

Und hier ist mein DB-Verbindung config:

'db' => [ 
    'class' => 'yii\db\Connection', 
    'dsn' => 'mysql:host=127.0.0.1;dbname=api_template', 
    'username' => 'root', 
    'password' => '', 
    'charset' => 'utf8', 
] 

Wenn es ist kein Bug im Framework, was ist dann der richtige Weg, diese Methode zu verwenden?

Antwort

2

Sie erstellen eine neue Instanz von Schema ohne Konfigurationsoptionen.
sieht aus wie es seine db Eigenschaft fehlt.

empfehle ich Ihnen Instanz bereitgestellt Trog Yii::$app

$dbSchema = Yii::$app->db->schema; 

    $myTableSchema = $dbSchema->getTableSchema('my_tbl'); 
    $uniqueKeys = $dbSchema->findUniqueIndexes($myTableSchema); 
+0

verwenden oh, ich weiß nicht, dass 'getTableSchema' automatisch das DBMS-Schema zurück. Daher brauche ich das '\ yii \ db \ mysql \ Schema' nicht explizit. – Yahya