2010-08-09 3 views
12

La citation ci-dessous a convaincu d'aller enfin à ORM. Dans le passé, je n'avais pas vraiment aimé ORM et l'écrivais comme une façon stupide de faire sql. Traiter des données hiérarchiques en sql est une douleur que je ne veux pas traiter.Quel ORM pour codeigniter?

Il y a une raison pour laquelle nous avons ces choses "Object-Relational Mapper", et c'est à cause d'un problème connu sous le nom de discordance d'impédance relationnelle objet. Fondamentalement, le modèle mathématique formel des bases de données utilisées pour garantir leur intégrité suit un système de tables avec lignes et colonnes et références à d'autres tables, tandis que les structures de données utilisées dans la plupart des langages de programmation manipulent les données. C'est plutôt comme la différence entre une feuille de calcul et un document XML, ou entre un registre et un diagramme d'arbre généalogique. - http://zork.net/motd/nick/django/your-favorite-orm-sucks.html

Je veux quelque chose avec un minimum d'effort pour la configuration. La plupart de mes projets sont petits donc je ne veux pas passer beaucoup de temps à définir des modèles quand je ne les utilise que pour quelques requêtes. J'utilise codeigniter comme structure PHP et MySQL comme base de données.

+1

duplication possible de [bonne bibliothèque ORM PHP?] (Http://stackoverflow.com/questions/108699/good-php-orm-library) et [beaucoup d'autres] (http://stackoverflow.com/search? q = orm + php) – Gordon

+2

Les données hiérarchiques dans une base de données qui ne dispose d'aucun support de requête récursive ou hiérarchique constituent votre problème. PostgreSQL serait une alternative viable, bien qu'il existe des versions libres de SQL Server et Oracle disponibles ces jours-ci ... –

+0

@OMG Poneys Donc, fondamentalement, le problème est que mySQL ne supporte pas les objets, donc la seule façon de récupérer les données est soit récursive interroger ou faire un tas de jointures à gauche et se retrouver avec des données redondantes? Je n'ai traité qu'oracle brièvement, une procédure stockée est l'outil approprié pour cela ou est-ce que la requête peut réellement retourner des données hiérarchiques dans des objets? – Keyo

Répondre

9

Doctrine est brillant et très facile à installer et à utiliser avec CI. Il y a trois façons de l'intégrer 1) la façon décrite dans le wiki CI 2) comme un plugin 3) en utilisant des crochets. Je n'aime pas l'option 1 car elle implique de jouer avec les fichiers système CI. L'option 2 est très facile et ce que j'utilise actuellement. Le programme d'installation est décrit sur www.phpandstuff.com. Je n'ai jamais essayé l'option 3 mais cela semble intéressant - http://blog.medryx.org/2008/10/04/codeigniter-and-doctrine/

+0

Merci. Je lis la documentation de la doctrine. Il y a pas mal de choses à apprendre, mais si je peux l'utiliser sur n'importe quel framework, ça vaudra la peine. – Keyo

2

Que diriez-vous Datamapper Overzealous Edition

Je pense que l'original DataMapper (de stensi) n » t en cours de développement. (Quelqu'un me corrige si je me trompe) Datamapper Overzealous Edition est facile à travailler avec Codeigniter.

Je suis sûr que Doctrine fonctionne bien aussi, mais je ne suis pas sûr de la facilité de configuration avec Codeigniter.

5

Je pense que vous devriez essayer le DataMapper ORM qui est écrit en natif CI Aussi facile à configurer et facile à utiliser. Je pense que c'est mieux que Doctrine.

Questions connexes