Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai deux tables `agents` et `users`. Pour l'explication les agents viennent d'une autre application et les users sont ceux qui se connectent au site. Ma relation permet de lier les deux sachant qu'un user n'a pas forcément d'agent associé.
Relation assez basic puisqu'il y a une clé étrangère `users`.`agentid` faisant référence à `agents`.`AGENTID`.
Mes classes
<?php class Users extends Zend_Db_Table { protected $_name = 'users'; protected $_primary = 'id'; protected $_referenceMap = array( 'Correspond' => array( 'columns' => array('AGENTID'), 'refTableClass' => 'Agents', 'refColumns' => array('agentid') )); }
<?php class Agents extends Zend_Db_Table { protected $_name = 'agents'; protected $_primary = 'AGENTID'; protected $_dependentTables = array('Users'); }
Quand je fais un requête du type
$tableUsers = new Users(); $users = $tableUsers->fetchAll(); $users->current()->findParentRow('Agents');
J'obtiens ce message d'erreur :
exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Statement\Pdo.php:238 Stack trace: #0 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array) #1 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Adapter\Abstract.php(433): Zend_Db_Statement->execute(Array) #2 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Adapter\Pdo\Abstract.php(230): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array) #3 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Table\Abstract.php(1330): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select)) #4 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Table\Abstract.php(1200): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select)) #5 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Db\Table\Row\Abstract.php(948): Zend_Db_Table_Abstract->fetchRow(Object(Zend_Db_Table_Select)) #6 D:\Mes Documents\Mes Projets\PHP\isa\application\modules\administration\controllers\UtilisateursController.php(41): Zend_Db_Table_Row_Abstract->findParentRow('Agents') #7 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Controller\Action.php(503): Administration_UtilisateursController->listeAction() #8 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Controller\Dispatcher\Standard.php(285): Zend_Controller_Action->dispatch('listeAction') #9 D:\Mes Documents\Mes Projets\PHP\libraries\Zend Framework Home\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #10 D:\Mes Documents\Mes Projets\PHP\isa\public\index.php(48): Zend_Controller_Front->dispatch() #11 {main}
J'ai fais d'autres relations dans mon projet qui m'ont l'air identiques du point de vu conceptuel et qui fonctionnent très bien. Alors soit ça fait trop longtemps que je suis sur mon projet et je n'ai plus les yeux en face des trous, soit il y a un truc que je n'ai pas compris.
Merci de votre aide.
Dernière modification par Devether (13-03-2009 01:23:53)
Hors ligne
Relis bien la doc, tu as mal compris la documentation.
columns appartient à la classe users et non agents donc c'est la colonne agentid. Du coup, AGENTID est la veleur de refColumns.
Hors ligne
Purée j'ai du faire un effort surhumain pour arriver à comprendre le sens des relations.
Et en effet j'avais inversé le deux colonnes.
Merci beaucoup
++
Hors ligne