Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > ORM > Doctrine
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2011, 19h21   #1
Membre expérimenté
 
Avatar de FMaz
 
Inscription : mars 2005
Messages : 648
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 648
Points : 527
Points : 527
Par défaut Doctrine 1.2 - Fatal error: Class 'BaseSupergroup' not found

Bonjour à tous,

Je viens d'installer doctrine 1.2.x (la dernière version 1.2), faute d'avoir droit à PHP 5.3. Et dans mon fichier de bootstrap du projet, j'ai mis ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
//Bootstapper Doctrine
require_once(dirname(__FILE__) . '/lib/3rd/Doctrine/Doctrine.php');
 
spl_autoload_register(array('Doctrine', 'autoload'));
Doctrine_Core::loadModels(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models');
 
$doctrine_mgr = Doctrine_Manager::getInstance();
$doctrine_mgr->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
$doctrine_mgr->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
$doctrine_mgr->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, true);
$doctrine_mgr->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
 
$db = $connMgr->getConn(); //Retourne une instance d'une classe héritant de PDO.
$conn = Doctrine_Manager::connection($db);
$conn->setOption('username', DB_USER);
$conn->setOption('password', DB_PASS);
Puis j'ai exécuté la commande suivante la première fois pour créer mes shémas:
Code :
1
2
 
Doctrine_Core::generateModelsFromDb(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models', array('default'), array('generateTableClasses' => true));
Ce qui as créé les fichiers dans mon dossier /models à la base du projet:
Citation:
#$ ls -l * -R
-rw-r--rwx 1 fmazerolle fmazerolle 298 2011-01-26 10:08 Group.php
-rw-r--rwx 1 fmazerolle fmazerolle 344 2011-01-26 10:08 GroupTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 301 2011-01-26 10:08 Locale.php
-rw-r--rwx 1 fmazerolle fmazerolle 348 2011-01-26 10:08 LocaleTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 328 2011-01-26 10:08 PageAssociation.php
-rw-r--rwx 1 fmazerolle fmazerolle 384 2011-01-26 10:08 PageAssociationTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 307 2011-01-26 10:08 PageMeta.php
-rw-r--rwx 1 fmazerolle fmazerolle 356 2011-01-26 10:08 PageMetaTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 295 2011-01-26 10:08 Page.php
-rw-r--rwx 1 fmazerolle fmazerolle 340 2011-01-26 10:08 PageTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 304 2011-01-26 10:08 PageUrl.php
-rw-r--rwx 1 fmazerolle fmazerolle 352 2011-01-26 10:08 PageUrlTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 307 2011-01-26 10:08 PageZone.php
-rw-r--rwx 1 fmazerolle fmazerolle 356 2011-01-26 10:08 PageZoneTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 326 2011-01-26 11:59 Supergroup.php
-rw-r--rwx 1 fmazerolle fmazerolle 364 2011-01-26 10:08 SupergroupTable.php
-rw-r--rwx 1 fmazerolle fmazerolle 295 2011-01-26 10:08 User.php
-rw-r--rwx 1 fmazerolle fmazerolle 340 2011-01-26 10:08 UserTable.php

generated:
total 48
-rw-r--rwx 1 fmazerolle fmazerolle 2197 2011-01-26 10:08 BaseGroup.php
-rw-r--rwx 1 fmazerolle fmazerolle 1829 2011-01-26 10:08 BaseLocale.php
-rw-r--rwx 1 fmazerolle fmazerolle 2070 2011-01-26 10:08 BasePageAssociation.php
-rw-r--rwx 1 fmazerolle fmazerolle 2017 2011-01-26 10:08 BasePageMeta.php
-rw-r--rwx 1 fmazerolle fmazerolle 9886 2011-01-26 10:08 BasePage.php
-rw-r--rwx 1 fmazerolle fmazerolle 1643 2011-01-26 10:08 BasePageUrl.php
-rw-r--rwx 1 fmazerolle fmazerolle 1566 2011-01-26 10:08 BasePageZone.php
-rw-r--rwx 1 fmazerolle fmazerolle 1736 2011-01-26 12:00 BaseSupergroup.php
-rw-r--rwx 1 fmazerolle fmazerolle 4344 2011-01-26 10:08 BaseUser.php

Le problème semble en fait apparaitre lorsque je tente de charger les modèles avec le code suivant:
Code :
1
2
 
Doctrine_Core::loadModels(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models');
Retournera cette erreur:
Citation:
( ! ) Fatal error: Class 'BaseSupergroup' not found in /var/www/cms/client1/framework/models/Supergroup.php on line 14
Call Stack
# Time Memory Function Location
1 0.0001 326632 {main}( ) ../index.php:0
2 0.0006 365596 require( '/var/www/cms/client1/framework/frontcontroller.php' ) ../index.php:6
3 0.0014 398040 require( '/var/www/cms/client1/framework/bootstrap.php' ) ../frontcontroller.php:18
4 0.0082 835396 Doctrine_Core::loadModels( ) ../bootstrap.php:103
5 0.0250 2668304 require_once( '/var/www/cms/client1/framework/models/Supergroup.php' ) ../Core.php:668
Pour rendre les choses un peu plus explicites, voici le contenu de /models/Supergroup.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
echo 'test';
/**
 * Supergroup
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 * 
 * @package    ##PACKAGE##
 * @subpackage ##SUBPACKAGE##
 * @author     ##NAME## <##EMAIL##>
 * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
 */
class Supergroup extends BaseSupergroup
{
 
}
Ps.: Oui, "test" s'affiche bien, signe que cette classe est bien autoloadé, mais pas celles contenues dans /models/generated/, dans ce cas-ci: BaseSupergroup.php

J'ai aussi essayé de copier tout ce qui était dans generated/ vers models/, ca n'a rien changé.

Bref, je ne comprend pas les choses suivantes:
- À quoi servent les fichiers générés par le paramètre generateTableClasses => true
- Pourquoi getTable('page') se retrouve à charger Supergroup
- Pourquoi l'autoload n'arrive pas à fonctionner pour les fichier de type BaseXXXX, qu'ils soient dans le dossier generated ou pas.

Toute réflexion est bienvenue !
FMaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 19h35   #2
Membre expérimenté
 
Avatar de FMaz
 
Inscription : mars 2005
Messages : 648
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 648
Points : 527
Points : 527
Un peu plus d'info:

Si je commente la ligne Doctrine_Core::loadModels(..);, je n'ai évidemment plus l'erreur.
Cependant lorsque je tente de charger des données, par exemple une page (qui n'a aucun lien avec Supergroup), j'ai droit à ceci:

Le code:
Code :
1
2
 
$page = Doctrine_Core::getTable('Page')->find(1);
l'erreur
Citation:
Doctrine_ExceptionCouldn't find class Page
FMaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web