Bonjour,
je bloque sur un problème depuis plusieurs jours maintenant et je n'ai plus aucune inspiration.
Avec doctrine 2, impossible d'utiliser les fonctions telles que DATE, DATE_FORMAT,... car elles sont propre à MySQL.
Mais aujourd'hui, j'ai vraiment besoin de cette fonction et j'ai trouvé une solution qui permet de déclarer cette fonction et de la faire connaitre à doctrine.
Voici la source de ce que j'avance :
https://github.com/mapado/MysqlDoctr...ster/README.md
J'ai donc fait ce qui était dit dans la documentation, à savoir :
- mettre à jour mon composer.json et lancer la commande php composer.phar update (celle-ci s'est exécuté avec succès)
- modifier mon fichier app/config/config.yml tel que décrit
- ça se corse quand je dois créer une nouvelle configuration doctrine qui requiert pas mal de propriété :
Je fonctionne avec le format YML, mes fichiers de mapping xxxxxxx.orm.yml sont donc dans le répertoire Blabla/MonProjetBundle/Resources/config/doctrine/.
Je dois faire ma requête dans mon fichier Blabla/MonProjetBundle/Entity/InventaireRepository.php
Voici le code que j'ai :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
// Configuration
$config = new \Doctrine\ORM\Configuration();
// Proxies
$config->setProxyDir("%kernel.cache_dir%/doctrine/orm/Proxies");
$config->setProxyNamespace('Proxies');
$config->setAutoGenerateProxyClasses(($env == "dev"));
// Driver
$driverImpl = new \Doctrine\ORM\Mapping\Driver\YamlDriver(__DIR__."../Resources/config/doctrine");
$config->setMetadataDriverImpl($driverImpl);
$config->setEntityNamespaces(array('BlablaMonProjetBundle' => 'Blabla\MonProjetBundle\Entity'));
$config->addCustomStringFunction('date', 'Mapado\MysqlDoctrineFunctions\DQL\MysqlDate');
$config->addCustomStringFunction('date_format', 'Mapado\MysqlDoctrineFunctions\DQL\MysqlDateFormat');
// Caching Configuration
if ($env == "dev") {
$cache = new \Doctrine\Common\Cache\ArrayCache();
} else {
$cache = new \Doctrine\Common\Cache\ApcCache();
}
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$connectionOptions = array(
'driver' => 'pdo_mysql',
'dbname' => '...',
'user' => '...',
'password' => '...',
'host' => '127.0.0.1');
$my_em = $this->_em->create($connectionOptions, $config); |
Suite à ça, j'ai l'erreur suivante :
No mapping file found named 'Blabla.MonProjetBundle.Entity.Inventaire.dcm.yml' for class 'Blabla\MonProjetBundle\Entity\Inventaire'.
Avez-vous une idée?
Je pense que j'ai fait quelques erreurs dans la déclaration de la configuration (déjà au niveau du proxy je pense) mais j'ai besoin d'un coup de main ! 
Merci d'avance!
Partager