php - Yii 在创建数据库列之前检查它是否存在

标签 php function model yii

我希望在创建列之前检查表中是否存在数据库列。我知道这可以使用纯 sql 轻松完成,但我想尝试使用 db 模式函数以 Yii 方式完成。

下面的 if 语句不起作用,因为没有 getColumn 函数,所以使用 db->schema 还有什么可以用来检查列 ($model->VARNAME) 是否存在?

if(!Yii::app()->db->schema->getColumn($form->TABLE_NAME, $model->VARNAME))
{
    if($model->save())
    {
        Yii::app()->db->schema->addColumn($form->TABLE_NAME, $model->VARNAME, $column_t);
        $this->redirect(array('view','field'=>$model->FIELD_ID));
    }
}
else
{
    $model->addError('VARNAME','Column "'.$model->VARNAME.'" already exists. Please pick a new column name.');
}

最佳答案

根据 Yii 2.0,它应该可以解决问题:

$table = Yii::$app->db->schema->getTableSchema('mytable');
if (!isset($table->columns['somecolumn'])) {
    // do something
}

关于php - Yii 在创建数据库列之前检查它是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18540530/

相关文章:

javascript - 如何在不使用 $_POST 的情况下获取下拉列表中所选项目的值并传递它

python - 在 SkLearn 中打印 Estimator 名称

c# - 对我的模型上的属性实现 IsDirty (WPF MVVM)

php - 这个 php echo 语句有什么问题?

php - 从服务器上完全删除一个文件

php - 文件扩展名在 codeigniter 中将大写更改为小写

c - rand() 在我的自定义函数中不返回任何值

php - 如何使用jquery加载函数加载php函数?

javascript - 在 Javascript 中使用 "Exports."?

ruby-on-rails - 如何让对象链接到对象?