检查表存在

iGb*_*nam 13 php mysql dao yii2

我需要检查数据库中是否存在表.我目前正在开发使用Yii2.

我的情况与这个问题有点不同,因为要检查的表不是(也可能不是)模型.

我试过了 (new \yii\db\Query())->select('*')->from($mysticTable)->exists());

以上是yii\db\Exception因为,根据上面提到的问题,yii\db\Query()班级->queryScalar()在被问到时是否会尝试->exists().这个方法总是会检查结果集是否存在.

如何检查表是否存在?

aro*_*hev 21

对于Yii2,您可以使用:

$tableSchema = Yii::$app->db->schema->getTableSchema('tableName');
Run Code Online (Sandbox Code Playgroud)

如果表不存在,它将返回null,因此您可以检查返回值是否null:

if ($tableSchema === null) {
    // Table does not exist
}
Run Code Online (Sandbox Code Playgroud)

您可以在官方的文档这种方法在这里.

  • 对于yii1:使用`getTable`而不是`getTableSchema`. (3认同)