doctrine

[Symfony] définir un préfix pour les tables générées par doctrine

voici comment définir un préfix pour les tables sql générées par doctrine :

il faut aller dans config/ProjectConfiguration.class.php et ajouter la fonction suivante :

  public function configureDoctrine(Doctrine_Manager $manager)
  {
    $manager->setAttribute(Doctrine_Core::ATTR_TBLNAME_FORMAT, 'mon_prefix_%s');
  }

ainsi toutes les tables auront pour préfix le mot "mon_prefix"

PS. ceci nous permet de manipuler des noms de tables/objets sans le prefix, voici un début de schema.yml

Contact:
  tableName: contacts
  actAs: [Timestampable]

  columns:
    email:      { type: string(100)}
    name:       { type: string(255) }

dans le code on fera des Doctrine::getTable("Contact") ou des $c = new Contact() alors que notre table s'appelle "mon_prefix_contacts"

[Symfony / Doctrine] tester si un enregistrement existe dans une table (sans passer par un find)

une fonction très pratique qui évite de faire un find inutile et qui reste très générique, elle trouve facilement sa place dans tout projet doctrine.

function recordExists($table, $id)
  {      
    // We're passing a single ID or an array of IDs
    // Parameters construction
    $params = is_array($id) ? array_values($id) : array($id);
    //query
    $q = Doctrine::getTable($table)->createQuery('dctrn_find')
        ->where('dctrn_find.' . implode(' = ? AND dctrn_find.', (array) Doctrine::getTable($table)->getIdentifier()) . ' = ?');

    return $q->count($params) > 0;
  }

Tags:

Subscribe to RSS - doctrine