Unknown record property / related component “xxx” on “XxxXxx” Many to Many und Doctrine
Wie ich ja hier schon schrieb, setze ich mich im Moment mal wieder konkret mit Doctrine auseinander.
Jetzt ist mir oben stehende Fehlermeldung bei einer Many to Many Relation zwischen Rollen und Privilegien einer ACL Struktur in die Quere gekommen. Grund war einfach, dass ich die lokale und die referentielle Verknüpfung falsch gesetzt/interpretiert habe.
Bsp.:
$this->hasMany('Privileges', array('local' => 'roles_id', 'foreign' => 'roles_has_privileges_privileges_id', 'refClass' => 'RolesPrivileges'));
scheint im ersten Moment richtig zu sein, wenn man folgende Tabellendefinition besitzt.
public function setTableDefinition() {
$this->setTableName('roles');
$this->hasColumn('roles_id', 'integer', 11, array('type' => 'integer', 'length' => 11, 'primary' => true, 'autoincrement' => true, 'unsigned' => true));
$this->hasColumn('roles_name', 'string', 45, array('type' => 'string', 'length' => 45));
$this->hasColumn('roles_description', 'string', 255, array('type' => 'string', 'length' => 255, 'notnull' => false));
}
Da geht der normale Menschenverstand von einer lokalen Referenz roles_id aus. Aber was ist schon normal in der IT?
Da RolesPrivileges folgendermaßen aufgebaut ist:
class RolesPrivileges extends Doctrine_Record {
public function setTableDefinition() {
$this->setTableName('roles_has_privileges');
$this->hasColumn('roles_has_privileges_roles_id', 'integer', null, array('primary' => true));
$this->hasColumn('roles_has_privileges_privileges_id', 'integer', null, array('primary' => true));
}
}
ist folge richtig die lokale Referenz: roles_has_privileges_roles_id
Ich habe diesen Artikel mal als kleines Memo an mich geschrieben aber vielleicht hat ja mal jemand ähnliche Probleme mit Bäumen und Wälder und so.

Danke für diesen Eintrag, hat mir sehr geholfen! Darauf wäre ich wohl nie gekommen. :-/