Jef*_*rey 3 php model function yii
我想在创建列之前检查表中是否存在数据库列.我知道这可以使用纯sql轻松完成,但我想尝试使用数据库模式函数以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.');
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*rtl 10
// Fetch the table schema
$table = Yii::app()->db->schema->getTable('mytable');
if(!isset($table->columns['somecolumn'])) {
// Column doesn't exist
}
Run Code Online (Sandbox Code Playgroud)
小智 7
按照Yii 2.0,它应该做的伎俩:
$table = Yii::$app->db->schema->getTableSchema('mytable');
if (!isset($table->columns['somecolumn'])) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
Yii2中的代码:
$columnData = $this
->getDb()
->getSchema()
->getTableSchema('table_name')
->getColumn('column_name');
if ($columnData) {
// Columns exists, do something!
}
Run Code Online (Sandbox Code Playgroud)
如果列不存在,则返回 null,否则返回包含有关现有列的信息的对象。
您将需要使用$model->hasAttribute():
if( $model->hasAttribute('VARNAME') )
Run Code Online (Sandbox Code Playgroud)
例如:
if( $model->hasAttribute('title') )
if( $model->hasAttribute($varname) )
Run Code Online (Sandbox Code Playgroud)