model: user, ActiveRecord перезапись primary_key: user_id

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

model: user, ActiveRecord перезапись primary_key: user_id

Сообщение Faster »

юзер создается 1 раз если валидное мыло. Поле user_id - primary_key с автоинкрементом.
в дальнейшем используется метод save() только для обновления записи - поиск идет по email и user_id
то есть new UserModel используется единожды.
и вот в один прекрасный момент user_id обновляется на последнее+1 значение автоинкремента.
кто нибудь сталкивался с таким поведением модели?
Bloom
Сообщения: 313
Зарегистрирован: 2013.02.25, 12:57

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Bloom »

Нет) не сталкивался.
А у тебя правда интересует только то, кто сталкивался, а кто нет?
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение chesar »

В какой-такой " прекрасный момент" ? Вообще у всех записей меняется id, или только у конкретной записи при сохранении модели?

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

<?php
public function actionIndex()
{
 $model = UserModel::model()->findByPk(4);
 $model->save();
}
?>
При таком раскладе id изменяется?
Думаю, найти решение было бы проще, если бы были предоставлены: модель, поведения (если имеются), таблица, ну и кусок контроллера.
Faster
Сообщения: 139
Зарегистрирован: 2013.09.19, 14:23

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Faster »

>При таком раскладе id изменяется?
нет...



смысла код приводить особого нет.
1 создание юзера ($user = new UserModel;$user->username='sss';$user->save();)
2 обновление статуса ($user = UserModel::model()->findByPk(4);$user->status='active';$user->save();)

ну еще юзаю
$user=UserModel::model()->find('email=:email', array(':email'=>$_POST['email']));

модель

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

class User extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
 
    public function tableName()
    {
        return 'users';
    }
    
    public function primaryKey()
    {
        return 'user_id';
    }
}
 
последнее вчера дописал

таблица

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

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(10) NOT NULL AUTO_INCREMENT,
  `user_date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_status` varchar(10) NOT NULL DEFAULT 'disabled',
  `user_type` varchar(10) NOT NULL DEFAULT 'general',
  `username` varchar(50) NOT NULL,
  `password` varchar(32) NOT NULL DEFAULT '24a453d9b54b8bf16fbc060698082631',
  `email` varchar(50) NOT NULL,
  `user_movies_count` int(10) NOT NULL DEFAULT '0',
  `user_violations_count` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`user_id`),
  KEY `date_added` (`user_date_added`),
  KEY `user_violations` (`user_violations_count`),
  KEY `user_movies_count` (`user_movies_count`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
 
Faster
Сообщения: 139
Зарегистрирован: 2013.09.19, 14:23

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Faster »

сейчас глянул - еще user_type на дефолтный сбрасывается
Bloom
Сообщения: 313
Зарегистрирован: 2013.02.25, 12:57

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Bloom »

У тебя модель User, а ты ищешь UserModel::model()->findByPk(4); это как?
Faster
Сообщения: 139
Зарегистрирован: 2013.09.19, 14:23

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Faster »

писал быстро тут, считайте они одинаковы
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Nafania »

ну как минимум код модели предоставлен не полностью, чтобы о чем-то судить.
Смотрите методы before*, смотрите поведения.
Faster
Сообщения: 139
Зарегистрирован: 2013.09.19, 14:23

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Faster »

код модели представлен полностью выше.
но я уже понял, что ответа не будет :) буду как обычно сам, топик можно закрывать
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение masson »

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

public function primaryKey()
    {
        return 'user_id';
    }
Это зачем?

http://www.yiiframework.com/doc/api/1.1 ... y()-detail
This method is meant to be overridden in case when the table is not defined with a primary key (for some legency database). If the table is already defined with a primary key, you do not need to override this method.
Faster
Сообщения: 139
Зарегистрирован: 2013.09.19, 14:23

Re: model: user, ActiveRecord перезапись primary_key: user_i

Сообщение Faster »

я писал раньше
>последнее вчера дописал
то есть это не влияет на баг никоим образом
Ответить