Ich habe eine Tabelle namens:
Kunde (id, Alias) post (id, subject) post_client (id, post_id, client_id)
Viele Kunden können mit einem Posten verbunden werden.
Mit Zend DB Table abstract habe ich begonnen, ein Modell zu erstellen, hier sind die Klassen:
ORM_Post
class ORM_Post extends Zend_Db_Table_Abstract {
protected $_name = 'Post';
protected $_dependentTables = array('ORM_Post_Client');
}
ORM_Client
class ORM_Client extends Zend_Db_Table_Abstract {
protected $_name = 'Client';
protected $_dependentTables = array(
'ORM_Post_Client'
);
}
ORM_Post_Client
class ORM_Post_Client extends Zend_Db_Table_Abstract {
protected $_name = 'Post_Client';
protected $_referenceMap = array(
'post' => array(
'columns' => 'post_id',
'refTableClass' => 'ORM_Post',
'refColumns' => 'id'
),
'client' => array(
'columns' => 'client_id',
'refTableClass' => 'ORM_Post_Client',
'refColumns' => 'id'
)
);
}
Was ich hoffte zu tun ist, rufen Sie eine Instanz der Post und laden Sie dann die Clients zugeordnet aswell als Laden einer Instanz des Clients und laden Sie alle Beiträge zugeordnet.
Also habe ich dies getan:
$post = new ORM_Post();
$results = $post->fetchAll();
foreach ($results as $key => $result){
$row = $results->current();
$client = $row->findDependentRowset('ORM_Post_Client','client');
}
und ich bekomme Referenzregel "client" verweist nicht auf Tabelle ORM_Post
Ich habe mich stundenlang damit herumgeschlagen und kann nicht erkennen, was ich falsch mache. Bin ich zu deklarieren, die Post_Client verbindet innerhalb der Client und Post-Modell auch?
EDIT
Hier ist, was ich gesucht habe:
$post = new ORM_Post();
$results = $post->fetchAll();
$return = array();
foreach ($results as $result){
$row = $post->find($result->id)->current();
$return[$result->id] = $row->toArray();
$return[$result->id]['clients'] = $row->findManyToManyRowset('ORM_Client', 'ORM_Post_Client')->toArray();
}
return $return;
Danke für die Ratschläge, Jungs, ihr habt mich auf den richtigen Weg gebracht.