Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'adapte un de mes vieux projets au Zend Framework.
L'architecture de mon projet est la suivante :
<monProjet>
+------Librairies
+-----modele
+-----Salarie.php
+-----Societe.php
+-----Zend // c'est le Zend Framework
Je charge le ZF à partir de mon bootstrap de la manière suivante
set_include_path(get_include_path().PATH_SEPARATOR."./libraries");
require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();
Salarie.php :
---------------
<?php
/**
* Classe modele_salarie
*/
class modele_Salarie extends Zend_Db_Table {
/**
* Nom de la Table
*
* @var string
*/
protected $_name = "t_salarie";
/**
* Clé Primaire de la Table
*
* @var string
*/
protected $_primary = array("id_salarie");
/**
* Relations
*/
protected $_referenceMap = array(
'SalarieDeSociete' => array(// Role
'columns' => array('id_societe'),
'refTableClass' => array('modele_Societe'),
'refColumns' => array('id_societe')
));
}
Societe.php :
---------------
<?php
/**
* Classe modele_societe
*/
class modele_Societe extends Zend_Db_Table {
/**
* Nom de la Table
*
* @var string
*/
protected $_name = "t_societe";
/**
* Clé Primaire de la Table
*
* @var string
*/
protected $_primary = "id_societe";
}
Au sein de mon programme, j'essaie de récupérer le libellé du Salarié :
$TSalarie = new modele_Salarie();
$salarie = $TSalarie->find($_GET['id_salarie'])->current();
echo $salarie->findParentmodele_Societe()->libelle;
Hélas, l'erreur suivante s'affiche :
Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No reference from table modele_Salarie to table modele_Societe' in C:\wamp\www\projet\libraries\Zend\Db\Table\Abstract.php:343 Stack trace: #0 C:\wamp\www\projet\libraries\Zend\Db\Table\Row\Abstract.php(670): Zend_Db_Table_Abstract->getReference('modele_Societe', NULL) #1 C:\wamp\www\projet\libraries\Zend\Db\Table\Row\Abstract.php(758): Zend_Db_Table_Row_Abstract->_prepareReference(Object(modele_Salarie), Object(modele_Societe), NULL) #2 C:\wamp\www\projet\libraries\Zend\Db\Table\Row\Abstract.php(892): Zend_Db_Table_Row_Abstract->findParentRow('modele_Societe', NULL) #3 [internal function]: Zend_Db_Table_Row_Abstract->__call('findParentmodel...', Array) #4 C:\wamp\www\projet\fiche_salarie.php(61): Zend_Db_Table_Row->findParentmodele_Societe() #5 {main} thrown in C:\wamp\www\projet\libraries\Zend\Db\Table\Abstract.php on line 343
J'ai bien défini la référence. Je ne comprends pas pourquoi il ne la voit pas.
Quelqu'un a-t-il une idée de mon erreur ?
Merci de votre aide.
Pascal PEYRE.
Dernière modification par ppeyre (08-01-2008 15:23:25)
Hors ligne
Je t 'invite à lire ceci
Il ne manquerait pas la dépendance dans modele_societe ?
protected $_dependentTables = array('Salarie');
Hors ligne
Je viens de rajouter dans Societe.php la ligne suivante mais le problème demeure :
protected $_dependentTables = array('modele_Salarie');
Dernière modification par ppeyre (08-01-2008 14:55:15)
Hors ligne
J'ai enfin trouvé la cause de mon problème.
En fait, RefTableClass ne peut accepter un tableau en parametres, il faut donc mettre le nom de la Classe directement. J'avais pris la mauvaise habitude de mettre array() à force d'utiliser le zend Framework.
Salarie.php : --------------- <?php /** * Classe modele_salarie */ class modele_Salarie extends Zend_Db_Table { /** * Nom de la Table * * @var string */ protected $_name = "t_salarie"; /** * Clé Primaire de la Table * * @var string */ protected $_primary = array("id_salarie"); /** * Relations */ protected $_referenceMap = array( 'SalarieDeSociete' => array(// Role 'columns' => array('id_societe'), 'refTableClass' => 'modele_Societe', 'refColumns' => array('id_societe') )); }
Dernière modification par ppeyre (08-01-2008 15:27:18)
Hors ligne
Pages: 1