Utworzyłem sobie 2 tabelki w bazie danych postgresa. Jedna
artykuly (id, id_dzialu, tytul, tresc)
z czego id to klucz glówny, id_dzialu obcy do drugiej tabelki dzialy która wygląda tak:
dzialy(id, nazwa, tytul, tresc)
gdzie id to klucz główny. Doctrine wygenerował mi takie klasy:
<?php abstract class BaseArtykuly extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('artykuly'); $this->hasColumn('id_dzialu', 'integer', 4, array('type' => 'integer', 'length' => 4, 'notnull' => true)); } } ?>
<?php abstract class BaseDzialy extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('dzialy'); $this->hasColumn('id', 'integer', 4, array('type' => 'integer', 'length' => 4, 'primary' => true, 'sequence' => 'content_id')); } } ?>
<?php class Artykuly extends BaseArtykuly { } ?>
<?php class Dzialy extends BaseDzialy { } ?>
Kierując się dokumentacją dopisałem funkcje setUp
<?php class Artykuly extends BaseArtykuly { public function setUp() { 'local' => 'dzial_id', 'foreign'=>'id' )); } } ?>
<?php class Dzialy extends BaseDzialy { function setUp() { 'local' => 'id', 'foreign'=>'dzial_id' )); } } ?>
Teraz w kontrolerze chciałem sprawdzić czy wszystko działa i napisałem
<?php class DzialController extends Zend_Controller_Action { function indexAction() { Doctrine_Manager::connection($this->config_db->pdo); $dzial = new Artykuly(); exit; } } ?>
I niestety zwraca mi taki błąd
Fatal error: Uncaught exception 'Doctrine_Record_Exception' with message 'Unknown record property / related component "dzial_id" on "Artykuly"' in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Record\Filter\Standard.php:55 Stack trace: #0 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Record.php(987): Doctrine_Record_Filter_Standard->filterGet(Object(Artykuly), 'dzial_id', Object(Doctrine_Null)) #1 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Record.php(948): Doctrine_Record->_get('dzial_id', true) #2 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Relation\LocalKey.php(48): Doctrine_Record->get('dzial_id') #3 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Record.php(977): Doctrine_Relation_LocalKey->fetchRelatedFor(Object(Artykuly)) #4 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\ in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\sluga\library\Doctrine\Record\Filter\Standard.php on line 55
Jakieś pomysły?