2012-05-11 4 views
1

Je dois utiliser un générateur de requête qui génère des instructions SQL contenant des espaces réservés.Générateur de requêtes qui fonctionne avec toutes les bases de données principales?

Il devrait:

  • Générer des instructions SQL contenant des espaces réservés (:? PlaceHolder ou)
  • Demandez pas mapping objet
  • Retour à la requête comme une chaîne ou similaire
  • travailler avec tous les bases de données majeures (par exemple Oracle, MySQL)

Je pense à propos de quelque chose comme ceci:

QueryBuilder::select(
    'db' => 'MySQL' 
    'from' => 'users', 
    'fields' => array(
     'user_id' => 'id' 
    ), 
    'where' => array(
     'AND' => array(
      /** 
       * ...conditions... 
       */ 
     ) 
    ), 
    'ljoin' => array(
     'Group' => array(
      'from' => 'groups' 
      /** 
       * ...stuff... 
       */ 
     ) 
    ) 
); 

J'ai regardé dans Doctrine2 mais il a besoin d'un mappage d'objet. Et beaucoup de configuration initiale. J'ai regardé dans DBTR Doctrine2 et il ne gère pas les requêtes INSERT.

Remarque: Les requêtes sont générées au cours du développement et enregistrées en tant que texte brut pour chaque moteur de base de données pris en charge.

Merci d'avance.

+0

la Doctrine 2 constructeur ORM requêtes très polyvalent et fonctionne avec la plupart des systèmes de SGBD AFAIK beaucoup de Les frameworks ont des outils similaires ou des classes d'enregistrements actifs qui font ce genre de chose. Au sommet de ma tête, je sais que CI et Yii ont tous les deux quelque chose de similaire, mais là encore, vous avez besoin d'un gros morceau de cadre pour que cela fonctionne correctement. –

Répondre

0

Un exemple est le Code Igniter Active Record, vous pouvez construire querys comme:

$this->db->select('field_one, field_two') 
    ->from('mytable') 
    ->where(array('field' => 'value', 'field' => 'value')) 
+0

Puis-je l'utiliser en dehors du cadre? Puis-je obtenir la requête et ne pas l'exécuter? –

+0

Utilisez 'last_query()' pour obtenir la dernière requête. Je ne l'utilise jamais en dehors du CI, mais vous pouvez voir la source des classes (core/base de données) et vous adapter à ce dont vous avez besoin. –

Questions connexes