Zjištění ID vloženého záznamu
- fcbchachar
- Člen | 3
Zdravím,
potřeboval bych s něčím pomoct (s Nette a celkově PHP jsem začal včera :-))
Potřebuju uložit formulář a část dat uložit do jedné tabulky, zjistit ID vloženého záznamu a zbylé data + ID jako cizí klíč uložit do druhé tabulky.
$this->model->getAddresses()->insert(array(
'idaddress' => null,
'i_firstname' => $form->values->i_firstname,
'i_lastname' => $form->values->i_lastname,
'i_company' => $form->values->i_company,
'i_street' => $form->values->i_street,
'i_city' => $form->values->i_city,
'i_zipcode' => $form->values->i_zipcode,
'i_country' => $form->values->i_country,
'p_firstname' => $form->values->p_firstname,
'p_lastname' => $form->values->p_lastname,
'p_company' => $form->values->p_company,
'p_street' => $form->values->p_street,
'p_city' => $form->values->p_city,
'p_zipcode' => $form->values->p_zipcode,
'p_country' => $form->values->p_country,
));
$this->model->getCustomers()->insert(array(
'idcustomer' => null,
'email' => $form->values->email,
'password' => hash('sha512', $pass . str_repeat('hhzhfhvcb', 10)),
'ico' => $form->values->ico,
'dic' => $form->values->dic,
'phone' => $form->values->phone,
'idaddress' => mysql_insert_id()
));
mysql_insert_id() by mělo vracet poslední vygenerované ID, jenže to vrací 0 a tak mi to při vkládání vypisuje error kvůli integritě dat. A teď nevím co s tím. Je potřeba po tom insertu do první tabulky to nějak commitnout? Nebo existuje nějaká jiná cesta, jak to ID zjistit? Nebo to dělám úplně blbě? :D
Díky za pomoc
- Tomáš Votruba
- Moderator | 1114
fcbchachar napsal(a):
$this->model->getAddresses()->insert(array( 'idaddress' => null, 'i_firstname' => $form->values->i_firstname, 'i_lastname' => $form->values->i_lastname, 'i_company' => $form->values->i_company, 'i_street' => $form->values->i_street, 'i_city' => $form->values->i_city, 'i_zipcode' => $form->values->i_zipcode, 'i_country' => $form->values->i_country, 'p_firstname' => $form->values->p_firstname, 'p_lastname' => $form->values->p_lastname, 'p_company' => $form->values->p_company, 'p_street' => $form->values->p_street, 'p_city' => $form->values->p_city, 'p_zipcode' => $form->values->p_zipcode, 'p_country' => $form->values->p_country, ));
Možná ti to v budoucnu ušetří spoustu práce. Výše uvedený kód lze zapsat takto:
$values = $form->getValues(TRUE); // same as: (array) $form->values;
$values["idaddress"] = NULL;
$this->model->getAddresses()->insert($values);
- duskohu
- Člen | 778
caute a viete mi poradit preco ked mam
$row = $this->context->createTasks()->insert(array(
'task_name' => $form->values->task_name,
'user_id' => $form->values->userId,
'created' => new DateTime(),
'date_end' => NULL,
'finish_term' => new DateTime(),
'tasklist_id' => $this->taskList->id
));
$taskId = $row->id;
VRATI : Undefined offset: 2
- Tomáš Votruba
- Moderator | 1114
Zkus dumpnout $row
, případně projdi foreachem, abys zjistil,
co v ní je.