Page 1 sur 1
[Doctrine] No yml schema found in schema.yml
Posté : 12 sept. 2010, 19:16
par ZeBrain
Bonjour, je tente d'utiliser Doctrine (sans symfony pour commencer) sous Windows 7 avec Wamp server.
quand j'essai de générer un modèle d'après un fichier yaml j'btiens l'erreur "No yml schema found in schema.yml". Pourtant j'ai copié exactement les données d'un tutoriel (
http://www.sylvainartois.fr.nf/fr/PHP/D ... _en_oeuvre).
J'ai bien activé php_pdo_mysql.
Re: [Doctrine] No yml schema found in schema.yml
Posté : 13 sept. 2010, 20:20
par ZeBrain
Voici mon YAML à titre d'info :
Code : Tout sélectionner
options:
type: INNODB
collate: utf8_unicode_ci
charset: utf8
User:
actAs:
SoftDelete:
Timestampable:
created:
name: account_birthday
type: date
format: Y-m-d
updated:
disabled: true
columns:
id:
type: integer(4)
primary: true
autoincrement: true
username:
type: string(255)
notnull : true
password:
type: string(255)
notnull : true
country:
type: enum
length: 2
values: ['EN', 'FR']
is_active:
type: boolean
default: false
rate:
type : float
avatar:
type: blob
birthday:
type: date
relations:
Groups:
class: Group
local: user_id
foreign: group_id
refClass: UserHasGroup
Group:
# Group est un mot réservé, on applique un setter sur le nom de la table
tableName: group_table
columns:
id:
type: integer(4)
primary: true
autoincrement: true
name:
type: string(255)
relations:
Users:
class: User
local: group_id
foreign: user_id
refClass: UserHasGroup
UserHasGroup:
columns:
user_id:
type: integer(4)
primary: true
group_id:
type: integer(4)
primary: true
Profil:
actAs:
Timestampable:
I18n:
fields: [title,body]
columns:
id:
type: integer(4)
primary: true
autoincrement: true
title:
type: string(255)
body:
type: clob
user_id:
type: integer(4)
relations:
User:
local: user_id
foreign: id
foreignType: one
Post:
actAs:
Timestampable:
Sluggable:
fields: [title]
Searchable:
fields: [title,body]
listeners: [ PostListener ]
columns:
id:
type: integer(4)
primary: true
autoincrement: true
user_id:
type: integer(4)
lang:
type: enum
length: 2
values: ['EN', 'FR']
title:
type: string(255)
notnull : true
body:
type: string(4000)
relations:
User:
foreignAlias: Posts
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 13:27
par Cyrano
Es-tu bien certain que le code pointe vers le bon fichier ?
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 16:04
par ZeBrain
merci pour la réponse. je commençais à me sentir seul ^^.
voici mon code :
schema.yml est dans le répertoire 'models'
Code : Tout sélectionner
<?php
require_once('Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$sBDDname = 'doctrine_test';
$sBDDuser = 'root';
$sBDDpassword = '';
$oConn = Doctrine_Manager::connection( "mysql://$sBDDuser:$sBDDpassword@localhost/$sBDDname" );
$oDocManager = Doctrine_Manager::getInstance();
//activer le mode debug
Doctrine_Core::debug( true );
$oConn->dropDatabase();
/* Voir toutes les options de generateModelsFromYaml */
$options = array(
'baseClassesDirectory' => 'BaseDir'
);
//Le 2e argument, models, correpond à un dossier : votre_projet/models
Doctrine_Core::generateModelsFromYaml( 'schema.yml', 'models', $options );
//On charge tout le modèle d'un coup
$models = Doctrine_Core::loadModels('models', Doctrine_Core::MODEL_LOADING_AGGRESSIVE );
//debug, affichage du modèle chargé
echo "<br/>loadModels : <br/><pre>";
print_r( $models );
echo "</pre>";
//idem, debug
$models = Doctrine_Core::getLoadedModels();
echo "<br/>getLoadedModels : <br/><pre>";
print_r( $models );
echo "</pre>";
//finalement, on créé la BDD et les tables
$oConn->createDatabase();
Doctrine_Core::createTablesFromModels('models');
?>
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 16:18
par Cyrano
Mouais, ça répond pas tellement à ma question : tu devrais jeter un coup d'oeil dans les logs d'accès Apache pour vérifier s'il n'y aurais pas une erreur 404 sur l'accès à ce fichier précisément et du coup tu verras où il le cherche.
En fait je soupçonne qu'il ne cherche pas là où tu l'as indiqué pour une raison qui m'échappe mais je n'ai pas trop le temps de plonger dans les détails de ton code.
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 17:15
par ZeBrain
Pas d'erreur 404 dans le fichier d'Apache. Par contre on dirait en effet que le fichier n'est pas trouvé. QUand je bricole la fonction buildSchema de la classe Doctrine_Import_Schema pour loader uniquement mon fichier j'obtient :
Code : Tout sélectionner
loadModels :
Array
(
[BaseGroup] => BaseGroup
[BasePost] => BasePost
[BaseProfil] => BaseProfil
[BaseUser] => BaseUser
[BaseUserHasGroup] => BaseUserHasGroup
[Group] => Group
[Post] => Post
[Profil] => Profil
[User] => User
[UserHasGroup] => UserHasGroup
)
getLoadedModels :
Array
(
[0] => Group
[1] => Post
[2] => Profil
[3] => User
[4] => UserHasGroup
)
Fatal error: Class 'PostListener' not found in C:\Web\wamp\www\Doctrine\models\BaseDir\BasePost.php on line 84
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 17:22
par ZeBrain
(bon la classe PostListener je l'ai créer pour supprimer l'erreur)
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 17:27
par Cyrano
(bon la classe PostListener je l'ai créer pour supprimer l'erreur)
Ok donc il manquait une classe : est-ce que ça a résolu le reste ?
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 17:32
par ZeBrain
Effectivement, on dirait que cette classe manquante a perturbé quelque chose.
J'ai enlevé mon hack de la fct buildSchema et ça tourne.
Ouf !
Re: [Doctrine] No yml schema found in schema.yml
Posté : 14 sept. 2010, 17:41
par Cyrano
Good, il te reste juste à cliquer sur le bouton [Résolu]
