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.