2009-08-03 4 views
0

Ok, inspiré en partie par Model Validation de CakePHP, j'ai créé un projet qui utilise un fichier de schéma de base de données séparé. Je n'ai pas aimé que dans CakePHP le fichier modèle et le schéma-db soient combinés dans le même fichier php. J'aime les avoir séparés. Toutes mes mises à jour, insertions et suppressions sql sont d'abord passées par ce schéma. J'ai écrit des fonctions update() insert() delete() pour effectuer cette validation automatiquement.Quelqu'un d'autre utilisant DB-Schema-Validation pour les projets MVC?

Pourquoi? Parce que je peux accepter un message d'un visiteur et envoyer les données non vérifiées à ma base de données sans avoir à le vérifier. Mon schéma filtre pour les violations innocentes et pas si innocentes.

Voici un exemple d'un schéma de base de données:

<?php 
$schemas = array('database_name_hidden'=>array(
'assigned_weeks'=>array(
    'id'=>array('id'), 
    'user_id'=>array('foreign_id','users'), 
    'week_number'=>array('posint'), 
    'year'=>array('posint'), 
    'unit_id'=>array('foreign_id','units'), 
    'claim_listing'=>array('posint'), 
    'created'=>array('created'), 
    'modified'=>array('modified'), 
    'resort_id'=>array('foreign_id','resorts','required'), 
), 

'trade_listings'=>array(
    'id'=>array('id'), 
    'assigned_week_id'=>array('foreign_id', 'assigned_weeks','required'), 
    'listing_assigned_week_id'=>array('foreign_id', 'assigned_weeks'), 
    'opposite_id'=>array('numeric'), 
    'listed'=>array('bool'), 
    'prev_id'=>array('foreign_id','trade_listings'), 
    'next_id'=>array('foreign_id','trade_listings'), 
    'listing_email'=>array('email'), 
    'listing_description'=>array('text'), 
    'trade_confirmation_number'=>array('text'), 
    'external_resort_id'=>array('foreign_id','resorts'), 
    'external_unit_number'=>array('text','size'=>array(1,6)), 
    'external_start_time'=>array('time_future',), 
    'external_end_time'=>array('time_future'), 
    'admin_comment'=>array('text'), 
    'comment'=>array('text'), 
    'created'=>array('created'), 
    'creator'=>array('creator'), 
    'modified'=>array('modified'), 
    'modifier'=>array('modifier'), 
    'resort_id'=>array('foreign_id','resorts','required'), 
), 
); 
?> 

Toute personne faisant autre chose comme ça?

Répondre

1

Je ne suis pas sûr de comprendre vraiment la question, mais en parlant de DB, de Validation, de Schéma et de PHP, j'aime beaucoup le framework ORM appelé Doctrine.

(Il est la pile ORM par défaut du Framework PHP symfony, BTW, mais peut être facilement intégré à d'autres cadres - je l'ai déjà utilisé avec Zend Framework, par exemple)

Il est site semble être en panne maintenant (ils ont expérimenté des problèmes liés à la charge élevée, ces dernières semaines), mais il fournit des classes/méthode pour faire la validation des données, basée sur les fichiers YAML décrivant le schéma, avant insérer des données dans DB.

Vous pouvez jeter un coup d'oeil ... eh bien

+0

voulez-vous regarder que ... La doctrine est très semblable à ce que j'ai écrit. Merci pour l'information. – anarkhos

Questions connexes