Malenkymuk
Новичок
YII 1.1.13
MS SQL 2012, freetsd 0.64
Таблица:
Модель:
Contoller:
_form.php:
При попытке $model->save():
Поле id в форме отсутствует. Специально проверил, при работе с mysql поведение такое-же. Просто Mysql допускает update поля auto_increment. Почему Yii упорно пытается обновить первичный ключ [id]=:yp0?
MS SQL 2012, freetsd 0.64
Таблица:
PHP:
CREATE TABLE [dbo].[name](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_name] PRIMARY KEY CLUSTERED
PHP:
class Name extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'WebSite.dbo.name';
}
public function rules()
{
return array(
array('name', 'required'),
array('id', 'numerical', 'integerOnly'=>true),
array('id, name', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array(
);
}
public function attributeLabels()
{
return array(
'id' => 'ID',
'name' => 'Name',
);
}
}
PHP:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
if(isset($_POST['Name']))
{
$model->attributes=$_POST['Name'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array(
'model'=>$model,
));
}
PHP:
/* -------- */
echo $form->textField($model,'name');
echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save');
/*----------*/
Yii формирует sql:CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 20018 Cannot update identity column 'id'. [20018] (severity 5) [(null)]
PHP:
UPDATE [WebSite].[dbo].[name] SET [id]=:yp0,
[name]=:yp1 WHERE [WebSite].[dbo].[name].[id]=2