J'ai une table nommée :
client (id, alias) post (id, sujet) post_client (id, post_id, client_id)
Plusieurs clients peuvent être joints à un poste.
En utilisant Zend DB Table abstract j'ai commencé à construire un modèle, voici les classes :
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'
)
);
}
Ce que j'espérais faire, c'est appeler une instance du Post et charger les clients associés, ainsi que charger une instance du client et charger tous les Post associés.
Alors j'ai fait ça :
$post = new ORM_Post();
$results = $post->fetchAll();
foreach ($results as $key => $result){
$row = $results->current();
$client = $row->findDependentRowset('ORM_Post_Client','client');
}
et j'obtiens La règle de référence "client" ne fait pas référence à la table ORM_Post.
Je me suis battu avec cela pendant des heures et je ne vois pas où je me trompe. Dois-je déclarer les jointures Post_Client à l'intérieur du modèle client et post également ?
EDIT
Voici ce que je cherchais :
$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;
Merci pour les conseils, vous m'avez mis sur la bonne voie.