2011-01-20 4 views
0

Je veux juste proposer une discussion ici. Cette question me vient parce que j'ai besoin de refactoriser quelques codes désordonnés.comment concevoir des classes pour gérer la requête de base de données avec plusieurs tables?

Habituellement, dans les applications Web, MVC est le modèle le plus courant pour l'architecture. Maintenant, je voudrais me concentrer sur la partie modulaire. Par exemple: Je suis un article avec le design. Pour chaque table de base de données, j'ai une classe VO et sa classe DAO. Cela fonctionne bien pour ces requêtes simples dans une table. Cependant, il y a beaucoup d'autres cas, certaines requêtes nécessitent plusieurs tables, par exemple: requête comme "INSERER DANS TABLEB SELECT * FROM TABLEB" etc. Ma stratégie pour gérer ce genre de requête est: J'ai une classe DB, par exemple: comme mysqli en PHP, pour utiliser sa requête mysqli :: directement. Parfois, cela fonctionne bien, mais parfois la requête devient vraiment longue, je ne pense pas que le code est maintenable. Comme il est dit dans l'article, il se peut que je doive créer une autre classe pour une requête de relation n-à-n, mais créer une classe pour n'importe quelle requête sur plus d'une table est beaucoup trop. Je ne connais pas la granularité ici. Aucune suggestion? Merci!

Répondre

0

Un bon conseil peut être d'utiliser Active Records, le combiner avec MVC et vous avez un cadre puissant. (La plupart, sinon tous les frameworks web l'utilisent). Si ce n'est pas le cas, essayez d'avoir une "relation" entre les modèles et avoir des fonctions insert(), get() pour chaque modèle.

Par exemple:

$article->get(); 
$article->category->get(); 

le premier « get() » serait une requête (en utilisant la classe de base de données) pour sélectionner cet article spécifique, tandis que le second « get() » serait une requête pour sélectionner une catégorie avec un certain ID basé sur un champ "category_id" dans le tableau "articles".

Questions connexes