Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Метод save перезаписывает данные

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Dante

цитировать



Зарегистрирован: 01 Ноя 2007 15:31:31
Сообщения: 6

СообщениеДобавлено: 18 Дек 2007 14:13:55    Заголовок сообщения: Метод save перезаписывает данные Ответить с цитатой

Вот такая проблема:
есть таблица в БД
id, field1, field2
id - primary key, autoincrement

Из модели вызвываю:
$this->save(array('field1' => 'test1', field2 => 'test1'));
$this->save(array('field2' => 'test2', field2 => 'test2'));

В БД добавляется только последняя запись. Я догадываюсь что при втором вызове save оно не добавляет новую запись, а апдейтит старую.
В чем проблема?

Пользуясь моментом, так же хотел спросить, в чем разница между
$this->Modelname->save($this->data) и $this->Modelname->save($this->data['Modelname']) ?
В мануале используются оба варианта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 18 Дек 2007 14:35:41    Заголовок сообщения: Ответить с цитатой

Если id в инстансе модели сохранен
Не уверен, но попробуй
Код:

$this->save(array('id' => false, 'field1' => 'test1', field2 => 'test1'));


Либо не через собственный инстанс ходи а создавай по одному на save
Код:

$a = new Model();
$b = new Model();
$a->save();
$b->save();


Или
Код:

$this->create($data0); $this->save();
$this->create($data1); $this->save();
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dante

цитировать



Зарегистрирован: 01 Ноя 2007 15:31:31
Сообщения: 6

СообщениеДобавлено: 18 Дек 2007 14:58:19    Заголовок сообщения: Ответить с цитатой

KPOTOB писал(а):
Если id в инстансе модели сохранен
Не уверен, но попробуй
Код:

$this->save(array('id' => false, 'field1' => 'test1', field2 => 'test1'));

Большое спасибо, помогло Smile

А на второй вопрос, кто нибудь знает ответ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 18 Дек 2007 20:41:05    Заголовок сообщения: Ответить с цитатой

Про второй вопрос

Оба варианта эквиваленты
Код:

$data = array();
$data['Post'] = array('id' => false, 'title' => 'ыыыыыыыыы', 'text' => 'ёёёёёёёёёё');
// Вариант 1
$this->Post->save($data);
// Вариант 2
$this->Post->save($data['Post']);


Вариант 1 будет работать быстрее (см. Model::set())

Смысл думаю чтобы за один вызов сохранять данные и в ассоциированых моделях - только оно еще не заимплеменчено )) см. https://trac.cakephp.org/ticket/3615
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 18 Дек 2007 20:45:52    Заголовок сообщения: Ответить с цитатой

В догонку

Цель такая

Код:

$data = array();

$data['Post'] = array('title' => 'Some', 'text' =>'text text');
$data['Author'] = array('id'=>$this->Session->read('User.id'));
$data['Category'] = array(array('title' => 'Test1'), array('title' => 'Test2'));

$this->Post->save($data);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dante

цитировать



Зарегистрирован: 01 Ноя 2007 15:31:31
Сообщения: 6

СообщениеДобавлено: 20 Дек 2007 16:15:33    Заголовок сообщения: Ответить с цитатой

Понятно, спасибо за ответ.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru