Niestety do dzisiaj praca z Doctrine przebiegała naprawdę sprawnie i przyjemnie aż do momentu gdy chciałem dodać rekord.
Próbuję dodać rekord do tabeli uzytkownicy a nastepnie numer telefonu do tabeli uzytkownicy_telefony i tutaj mam problem.
Przedstawię krótki kod żeby nie zanudzać

Bląd który otrzymuje
Couldn't get last insert identifier.
Według manuala oraz róznych poradników powinno działać a jednak

oto kod:
<?php $u = new Uzytkownicy(); $u->imie = $imie; $u->nazwisko = $nazwisko; $u->save(); $ut = new UzytkownicyTelefony(); $ut->telefon = $telefon; $ut->uzytkownicy_id = $u['id']; $ut->save(); ?>
Podobnie jest z:
<?php $u = new Uzytkownicy(); $u->imie = $imie; $u->nazwisko = $nazwisko; $u->UzytkownicyTelefony[0]->telefon = $telefon; $u->save(); ?>
Klasa Uzytkownicy
<?php abstract class BaseUzytkownicy extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('uzytkownicy'); $this->hasColumn('id', 'integer', 4, array('type' => 'integer', 'length' => 4, 'unsigned' => 1, 'primary' => true, 'autoincrement' => true)); $this->hasColumn('imie', 'string', 20, array('type' => 'string', 'length' => 20, 'notnull' => true)); $this->hasColumn('nazwisko', 'string', 40, array('type' => 'string', 'length' => 40, 'notnull' => true)); } public function setUp() { 'foreign' => 'uzytkownicy_id')); } } ?>
Klasa UzytkownicyTelefony
<?php abstract class BaseUzytkownicyTelefony extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('uzytkownicy_telefony'); $this->hasColumn('telefon', 'string', 40, array('type' => 'string', 'length' => 40, 'notnull' => true)); $this->hasColumn('uzytkownicy_id', 'integer', 4, array('type' => 'integer', 'length' => 4, 'unsigned' => 1)); } public function setUp() { 'foreign' => 'id')); } } ?>
Kod troche obszerny ale to łatwy przykład

============= EDIT =============
Problem rozwiązany. Okazało się że aby operacja zakończyłą się sukcesem tabela uzytkownicy_telefony musi posiadac pole id (PRIMARY KEY) zwykle do tego typu tabel nie daje klucza bo nie bylo takiej potrzeby jednak widze ze Doctrine tego wymaga.
