model->save() id и mssql

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
vfz4z
Сообщения: 3
Зарегистрирован: 2011.01.12, 18:14

model->save() id и mssql

Сообщение vfz4z »

пишу на yii впервые. добавляю данные в бд методом save. Нужен id вставленной записи. Где он живёт? бд mssql и id там не цифра,а специальный тип...
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: model->save() id и mssql

Сообщение zibert02 »

ид живет в вашей модели $model->id
если ид в базе не автоинкремент, то придется до сохранения задать его явно
$model->id='blabla'; и затем сохранить
vfz4z
Сообщения: 3
Зарегистрирован: 2011.01.12, 18:14

Re: model->save() id и mssql

Сообщение vfz4z »

Код: Выделить всё

$form = new user('register');
      $form->attributes=$_POST['user'];
      
      if($form->validate('register'))
      {
        if (($form->model()->count("email = :email", array(':email' => $form->email))))
        {
          // Указанный логин уже занят. Создаем ошибку и передаем в форму
          $form->addError('login', 'Логин уже занят');
          $this->render("registration", array('form' => $form,'form_fiz' => $form_fiz,'uadr' => $uaddress,'fadr' => $faddress));
        } else
        {
          //регим пользователя
          $form->salt = md5(rand(0,time()));
          $form->password = sha1($form->password.$form->salt);

          if ($form->save(false))
          {
            die (print_r($form));
         } else Yii::trace('save error', 'my_messages');          
          $this->render("registration_ok");
        }
 
вот что он выводит. никаго упоминания о ид...
user Object
(
[verifyCodе] => poqeveh
[password2] => 12345
[activate] =>
[_md:CActiveRecord:private] => CActiveRecordMetaData Object
(
[tableSchema] => CMssqlTableSchema Object
(
[catalogName] =>
[schemaName] => dbo
[name] => gge_user
[rawName] => [dbo].[gge_user]
[primaryKey] => uuid
[sequenceName] =>
[foreignKeys] => Array
(
)

[columns] => Array
(
[uuid] => CMssqlColumnSchema Object
(
[name] => uuid
[rawName] => [uuid]
[allowNull] =>
[dbType] => uniqueidentifier
[type] => string
[defaultValue] => newid
[size] =>
[precision] =>
[scale] =>
[isPrimaryKey] => 1
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[email] => CMssqlColumnSchema Object
(
[name] => email
[rawName] => [email]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[password] => CMssqlColumnSchema Object
(
[name] => password
[rawName] => [password]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[salt] => CMssqlColumnSchema Object
(
[name] => salt
[rawName] => [salt]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[activated] => CMssqlColumnSchema Object
(
[name] => activated
[rawName] => [activated]
[allowNull] =>
[dbType] => tinyint
[type] => integer
[defaultValue] => 0
[size] => 3
[precision] => 3
[scale] => 0
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

)

[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[columns] => Array
(
[uuid] => CMssqlColumnSchema Object
(
[name] => uuid
[rawName] => [uuid]
[allowNull] =>
[dbType] => uniqueidentifier
[type] => string
[defaultValue] => newid
[size] =>
[precision] =>
[scale] =>
[isPrimaryKey] => 1
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[email] => CMssqlColumnSchema Object
(
[name] => email
[rawName] => [email]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[password] => CMssqlColumnSchema Object
(
[name] => password
[rawName] => [password]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[salt] => CMssqlColumnSchema Object
(
[name] => salt
[rawName] => [salt]
[allowNull] =>
[dbType] => nvarchar
[type] => string
[defaultValue] =>
[size] => -1
[precision] => -1
[scale] =>
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[activated] => CMssqlColumnSchema Object
(
[name] => activated
[rawName] => [activated]
[allowNull] =>
[dbType] => tinyint
[type] => integer
[defaultValue] => 0
[size] => 3
[precision] => 3
[scale] => 0
[isPrimaryKey] =>
[isForeignKey] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

)

[relations] => Array
(
)

[attributeDefaults] => Array
(
[activated] => 0
)

[_model:CActiveRecordMetaData:private] => user Object
(
[verifyCodе] =>
[password2] =>
[activate] =>
[_md:CActiveRecord:private] => CActiveRecordMetaData Object
*RECURSION*
[_new:CActiveRecord:private] =>
[_attributes:CActiveRecord:private] => Array
(
)

[_related:CActiveRecord:private] => Array
(
)

[_c:CActiveRecord:private] =>
[_pk:CActiveRecord:private] =>
[_alias:CActiveRecord:private] => t
[_errors:CModel:private] => Array
(
)

[_validators:CModel:private] =>
[_scenario:CModel:private] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

)

[_new:CActiveRecord:private] =>
[_attributes:CActiveRecord:private] => Array
(
[activated] => 0
[email] => tes1t@user.ru
[password] => a7ee6af26a69362f1dd0d14aa490f8322bc5a4a1
[salt] => 2cb25da05879bde5bf580ad3dc7def9d
)

[_related:CActiveRecord:private] => Array
(
)

[_c:CActiveRecord:private] =>
[_pk:CActiveRecord:private] =>
[_alias:CActiveRecord:private] => t
[_errors:CModel:private] => Array
(
)

[_validators:CModel:private] => CList Object
(
[_d:CList:private] => Array
(
[0] => CStringValidator Object
(
[max] => 128
[min] => 3
[is] =>
[tooShort] =>
[tooLong] =>
[allowEmpty] => 1
[encoding] =>
[attributes] => Array
(
[0] => email
[1] => password
[2] => password2
)

[message] =>
[skipOnError] =>
[on] => Array
(
[register] => register
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[1] => CRequiredValidator Object
(
[requiredValue] =>
[strict] =>
[attributes] => Array
(
[0] => email
[1] => password
)

[message] =>
[skipOnError] =>
[on] => Array
(
[register] => register
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[2] => CCompareValidator Object
(
[compareAttribute] => password2
[compareValue] =>
[strict] =>
[allowEmpty] =>
[operator] => =
[attributes] => Array
(
[0] => password
)

[message] =>
[skipOnError] =>
[on] => Array
(
[register] => register
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[3] => CEmailValidator Object
(
[pattern] => /^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/
[fullPattern] => /^[^@]*<[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])$/
[allowName] => 1
[checkMX] =>
[checkPort] =>
[allowEmpty] => 1
[attributes] => Array
(
[0] => email
)

[message] =>
[skipOnError] =>
[on] => Array
(
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[4] => CCaptchaValidator Object
(
[caseSensitive] =>
[captchaAction] => captcha
[allowEmpty] =>
[attributes] => Array
(
[0] => verifyCodе
)

[message] =>
[skipOnError] =>
[on] => Array
(
[register] => register
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[5] => CRequiredValidator Object
(
[requiredValue] =>
[strict] =>
[attributes] => Array
(
[0] => email
[1] => activate
)

[message] =>
[skipOnError] =>
[on] => Array
(
[activation] => activation
)

[safe] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

)

[_c:CList:private] => 6
[_r:CList:private] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)

[_scenario:CModel:private] => update
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)1
_attributes содержит поле activated => 0 (по умолчанию 0 в таблице, постом этот параметр не передаётся), а id нету. я чего уже только не перепробовал. хоть самому идешники генерь...
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: model->save() id и mssql

Сообщение zibert02 »

валидацию лучше перенести в модель, а не в контроллер
насчет ид-покажите структуру таблицы
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: model->save() id и mssql

Сообщение BuCeFaL »

$model->uuid
vfz4z
Сообщения: 3
Зарегистрирован: 2011.01.12, 18:14

Re: model->save() id и mssql

Сообщение vfz4z »

это всё работает в сдучае если ид - числовое значение. переделел таблицы - помогло. а вот тип mssql uniqueidentifier yii игнорит. даже если find'ом выбрать поле, то ид такого типа будет пустым...
Ответить