2009-11-26 5 views
3

Je viens de commencer à utiliser les espaces de noms PHP. J'ai deux modèles des classes dans des fichiers séparésPHP Doctrine relation avec les espaces de noms

Dans les deux fichiers d'abord, je déclare l'espace de noms

espace de noms eu \ ed \ sixImport \ \ importViewer modèles;

première classe:

classe Log étend \ Doctrine_Record

$this->hasMany('eu\ed\sixImport\importViewer\models\DataSource as DataSource', array(
     'local' => 'id', 
     'foreign' => 'logId'));//setup relationship in setUp method 

deuxième classe:

classe DataSource étend \ Doctrine_Record

$this->hasOne('eu\ed\sixImport\importViewer\models\Log as Log', array(
     'local' => 'logId', 
     'foreign' => 'id'));//setup relationship in setUp method 

Tout fonctionne bien jusqu'à ce que je fais quelque chose comme ça

$query = \Doctrine_Query::create() 
     ->select('log.*') 
     ->from('eu\ed\sixImport\importViewer\models\Log log') 
     ->leftJoin("log.DataSource") 
     ->orderBy("log.id DESC"); 

    $requiredPage = (($startingRow - ($startingRow%$rowsRequired))/$rowsRequired) + 1; 
    $pager = new \Doctrine_Pager($query, $requiredPage, $rowsRequired); 
    $res = $pager->execute();   
    $this->logsPageCount = $pager->getNumResults(); 
    print_r($res[0]["DataSource"]->toArray());//it fails on access to relationship 

que la doctrine Exception exception jet Uncaught 'Doctrine_Exception' message 'Impossible de trouver la classe eu \ ed' dans C: \ wamp \ www \ importViewer \ ressources \ doctrine \ Doctrine-1.1.5 \ lib \ Doctrine \ Table.php: 293 ...

D'exception, vous pouvez voir, il cherche la classe 'eu \ ed'. Backslash [s] couper le reste du nom de la classe, et que la classe n'est pas évidemment trouvé. Pouvez-vous me suggérer comment résoudre ce problème?

Merci

+0

Deux choses; un, quelle est votre version de PHP? Deuxièmement, essayez d'utiliser des guillemets doubles et des doubles barres obliques inverses. Cela ne devrait pas faire la différence, mais on ne sait jamais. – Qix

Répondre

0

Je ne sais pas si Doctrine 1 prend en charge les espaces de noms. Je recommande vraiment d'utiliser Doctrine 2 - il est construit sur l'architecture mature (avec API de Java Hibernate) et n'implique pas beaucoup de magie comme Doctrine 1.

Questions connexes