Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-03-2009 04:03:04

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Relations et findDependentRowset

Bonjour,

je rencontre un pb que je n'arrive décidément pas à résoudre.

J'ai 2 tables : artistes et songs. Les relations sont assez évidentes, les artistes sont parents des chansons.

ma classe artistes :

Code:

class Artistes extends Zend_Db_Table_Abstract
{
    /* Nom de la table */
    protected $_name = 'artistes';
    /* Clé primaire */
    protected $_primary = 'id';
    /* Nom des table enfants */
    protected $_dependentTables = array('Songs');

ma classe songs

Code:

class Songs extends Zend_Db_Table_Abstract
{
    protected $_name = 'chansons';
    protected $_primary = 'id';
    protected $_referenceMap     = array(
            'Interprete' => array(
                'columns'         => 'id_artiste',
                'refTableClass' => 'Artistes',
                'refColumns'    => 'id'
                )
            );

J'ai un objet artiste, d'où j'appelle la méthode findDependentRowset, afin d'avoir les chansons affiliées.

Code:

$table = new Artistes();
        
$artistrowset = $table->find('5'); // pour exemple
$artist = $artistrowset->current(); // $artist contient l'objet zend..._row.
        
return $artist->findDependentRowset('Songs');

Et là j'ai l'erreur :

Zend_Db_Table_Row_Exception: File "Songs.php" does not exist or class "Songs" was not found in the file

#0 C:\wamp\www\coverchords\application\models\Artistes.php(57): Zend_Db_Table_Row_Abstract->findDependentRowset('Songs')
#1 C:\wamp\www\coverchords\application\controllers\ArtistController.php(53): Model_Artistes->listSongs('5')
#2 C:\wamp\www\coverchords\library\Zend\Controller\Action.php(503): ArtistController->songslistAction()
#3 C:\wamp\www\coverchords\library\Zend\Controller\Dispatcher\Standard.php(285): Zend_Controller_Action->dispatch('songslistAction')
#4 C:\wamp\www\coverchords\library\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 C:\wamp\www\coverchords\public\index.php(44): Zend_Controller_Front->dispatch()
#6 {main}

Pourtant mon fichier existe bien, il se situe dans /application/models/DbTable/, le nom de la classe est bon.

Tiens juste pour me marrer, j'ai copié Songs.php un peu partout dans l'arbo... et dans public ça marche !
Y a quelquechose à changer concernant la convention d'arborescence ?

Merci pour votre aide.

Dernière modification par supertino7 (04-03-2009 04:04:35)

Hors ligne

 

#2 04-03-2009 05:34:12

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Relations et findDependentRowset

Si tu veux que ton fichier soit automatiquement inclus, tu dois ajouter ton dossier /application/models/DbTable/ dans l'include path comme ceci:

Code:

set_include_path(
'../application/models/DbTable/' . PATH_SEPARATOR . 
get_include_path()
);

Hors ligne

 

#3 04-03-2009 13:36:36

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Relations et findDependentRowset

3uclide a écrit:

Si tu veux que ton fichier soit automatiquement inclus, tu dois ajouter ton dossier /application/models/DbTable/ dans l'include path comme ceci:

Code:

set_include_path(
'../application/models/DbTable/' . PATH_SEPARATOR . 
get_include_path()
);

aaah d'accord.

et ça m'eviterait egalement d'avoir recours à require_once à l'interieur de mes classes (comme on fait pour débuter avec le quickstart)
Merci

Pendant que j'y suis , est ce qu'il existe une méthode magique qui evite de devoir instancier le modele, en tout cas qui permette d'avoir automatiquement accès au modele, sans devoir créer un paramètre + une function qui fasse un new... ?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages