【问题标题】:Yii2 MySQL - How to use findUniqueIndexes method?Yii2 MySQL - 如何使用 findUniqueIndexes 方法?
【发布时间】:2017-01-30 14:12:20
【问题描述】:

我从这里读到:
http://www.yiiframework.com/doc-2.0/yii-db-mysql-schema.html#findUniqueIndexes()-detail

findUniqueIndexes() 返回给定表的所有唯一索引。


到目前为止我做了什么:

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

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

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

但是我收到了这个错误:

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))

这是我的数据库连接配置:

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

如果不是框架的bug,那么这个方法的正确使用方法是什么?

【问题讨论】:

    标签: php mysql yii2


    【解决方案1】:

    您正在创建 Schema 的新实例,但没有任何配置选项。
    看起来它缺少 db 属性。

    我推荐你使用通过Yii::$app提供的实例

        $dbSchema = Yii::$app->db->schema;
    
        $myTableSchema = $dbSchema->getTableSchema('my_tbl');
        $uniqueKeys = $dbSchema->findUniqueIndexes($myTableSchema);
    

    【讨论】:

    • 哦,不知道getTableSchema会自动返回具体的DBMS架构。因此我不需要明确的\yii\db\mysql\Schema
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多