2012-09-20 3 views
0

Может кто-нибудь объяснить мне, почему CakePHP Виль создать только одну строку, когда я выполнить следующий код2 Сохранить вызовы в одной модели

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 1, 'Addressline_1' => $_POST['Straat'], 'House_Number' => $_POST['Huisnummer'], 'Postal_Code' => $_POST['Postcode'], 'City' => $_POST['Woonplaats'], 'Country' => 'NL')); 

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 2, 'Addressline_1' => $_POST['F_Straat'], 'House_Number' => $_POST['F_Huisnummer'], 'Postal_Code' => $_POST['F_Postcode'], 'City' => $_POST['F_Woonplaats'], 'Country' => 'NL')); 

Я просто хочу, чтобы это сделать 2 отдельные строки в одной таблице

РЕДАКТИРОВАТЬ:

После того, как я следовал решения ниже и изменил код тэ к следующему:

$this->Adresses->create(); 

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 1, 'Addressline_1' => $_POST['Straat'], 'House_Number' => $_POST['Huisnummer'], 'Postal_Code' => $_POST['Postcode'], 'City' => $_POST['Woonplaats'], 'Country' => 'NL')); 

$this->Adresses->create(); 

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 2, 'Addressline_1' => $_POST['F_Straat'], 'House_Number' => $_POST['F_Huisnummer'], 'Postal_Code' => $_POST['F_Postcode'], 'City' => $_POST['F_Woonplaats'], 'Country' => 'NL')); 

он сохраняет отдельные строки, но по какой-либо причине тип столбца находится в обеих строках «1». Как это возможно?

+0

- ваш основной ключ таблицы AUTO_INCREMENT? – mark

+0

да, и это называется ID – AgeDeO

+0

для начала. Я бы придерживался условностей: lower_case_underscored_field_names. хотя это не должно быть источником проблемы – mark

ответ

1

Вы должны вызвать create метод после того, как первый save метод например: -

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 1, 'Addressline_1' => $_POST['Straat'], 'House_Number' => $_POST['Huisnummer'], 'Postal_Code' => $_POST['Postcode'], 'City' => $_POST['Woonplaats'], 'Country' => 'NL')); 

$this->Adresses->create(); 

$this->Adresses->save(array('Contact_ID' => $ClientID, 'Type' => 2, 'Addressline_1' => $_POST['F_Straat'], 'House_Number' => $_POST['F_Huisnummer'], 'Postal_Code' => $_POST['F_Postcode'], 'City' => $_POST['F_Woonplaats'], 'Country' => 'NL')); 
+1

nope, вы всегда должны сначала вызвать create(). вы никогда не знаете, сохранили ли вы до первого вызова (в beforeFilter и т. д.), который затем снова испортит ваш код. поэтому никогда не забывайте create() перед любым вставкой вызова сохранения. – mark

+0

вы должны вызвать метод 'create' перед каждым вызовом метода' save' –

+0

Если метод 'save' вызывает первый раз, нет необходимости вызывать метод' create', если вы вызываете метод 'save' после' save' метод call, вы должны использовать метод 'create' –

0

потому что вы забыли один из самых основных вещей, при создании новых записей: всегда вызывайте создать() первый:

$this->Adresses->create(); 
$this->Adresses->save($data); 

, иначе второй вызов будет использовать идентификатор из первого. поэтому никогда не забывайте create() при создании новой записи (вместо обновления существующих).

+0

Обновление документа, чтобы уточнить это для других начинающих: https://github.com/cakephp/docs/pull/385 – mark

Смежные вопросы