Archive pour la catégorie ‘Doctrine’

Symfony2 : Unknown database type enum requested

mercredi 3 octobre 2012

Avec Symfony2 et Doctrine2, il se peut que vous rencontriez ce message d’erreur:

[Doctrine\DBAL\DBALException]
 Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

C’est que vous utilisez le type ENUM dans vos tables MySQL qui n’est pas compris par PDO. Le plus simple pour le résoudre : éditer le fichier config.yml et rajouter

mapping_types:
    enum: string

A la fin de la rubrique doctrine:dbal:

doctrine:
    dbal:
        driver: %database_driver%
         host: %database_host%
         port: %database_port%
         dbname: %database_name%
         user: %database_user%
         password: %database_password%
         charset: UTF8
         mapping_types:
             enum: string

Il existe d’autres solutions proposées dans la documentation de Doctrine, mais plus complexes, tout dépendra de vos besoins.

Les composants de Doctrine – Le composant Table

lundi 14 juin 2010

Maintenant que nous avons initialisé Doctrine (vois l’article sur l’introduction à Doctrine), nous allons pouvoir commencer à l’utiliser.

Comme nous l’avons dit, avec Doctrine tout est objet. Nous aurons donc accès à des classes qui vont nous permettre de travailler les données. On appelle ça des composants. Doctrine fournit plusieurs composants. En voici trois essentiels :

  • Le composant Record qui représente un enregistrement d’une table
  • Le composant Collection qui représente un ensemble de Record
  • Le composant Table qui représente notre table et nous permettra d’accéder aux composants Collection et Record

Dans cet article nous allons étudier le composant Table.  Il permet comme son nom l’indique d’accéder à une table de notre base de données et d’interagir avec elle. Pour cela il nous faut une instance de la classe représentant notre table :

1
2
3
<?php
require_once('bootstrap.php');
$table = Doctrine_Core::getTable('Produits');

Lire le reste de cet article »

Introduction à Doctrine

mardi 12 janvier 2010

Cette année je suis passé à Doctrine. Les raisons étaient diverses:

  • Il était temps pour moi de laisser tomber la vieille extension mysql de PHP et de passer à de l’objet.
  • Trouver un système qui s’intègre facilement dans un modèle MVC
  • Pouvoir faire de l’abstraction de base de données
  • Idéalement un système qui va me faire gagner du temps dans mes développements.

Après avoir regardé plusieurs solutions, je me suis donc tourné vers Doctrine:

  • Il s’interface avec PDO, donc abstraction de base de données
  • Les performances semblent au rendez-vous
  • Il génère automatiquement le modèle du MVC
  • Support des fonctionnalités récentes de MySQL
  • Utilisé par défaut dans Symfony
  • Tout est objet

Bref je me suis dis que c’était le top. Et c’est vrai que quand on le maîtrise c’est vraiment sympa. Sauf que la transition s’est quand même un peu faite dans la douleur. La doc est présente mais dans certains cas j’ai quand même perdu pas mal de temps à chercher des solutions à mes problèmes. Je me suis donc dit qu’il était peut-être possible d’apporter quelques compléments d’information.

Lire le reste de cet article »