principiantes - ¿Cuál es el marco ORM más fácil de usar para PHP?
mejor framework php 2018 (13)
Recomiendo QCubed . Es un framework ORM increíblemente poderoso con solo PHP5 que se enfoca en la generación de código, andamios UI y rápido desarrollo de aplicaciones. Echa un vistazo a los videos de entrenamiento: http://qcu.be/content/video-screencasts
Estoy buscando el registro activo de Ruby para PHP. Algo tan simple que solo defino mis campos, extiendo la clase base de ORM y obtengo operaciones de ACID de forma gratuita. Debería obtener getters y setters predeterminados sin escribir ningún código, pero anular un getter o setter predeterminado es tan fácil como declarar get $ fieldName o establecer $ fieldName funciones con el comportamiento que quiero. Symphony te hace crear alrededor de 5 archivos por objeto, y todos los objetos definidos siempre cargan tanto como yo puedo decir. ¿Cuál es una mejor alternativa? ¿Por qué es mejor? ¿Puedes poner ejemplos simples en tus respuestas, por favor?
Doctrine es otro ORM que he visto además de sinfonía. También necesita crear archivos yaml que describan sus estructuras de datos. La base de datos ya define esto. Lo que acaba de leer mi tabla defs sin tener que generar y almacenar archivos de configuración en todas partes?
He creado el mío, sin la hinchazón. (Aunque necesito actualizar mis fuentes en el sitio)
Lo creé exactamente con los puntos en mente que mencionas: no hay docenas de archivos xml, ningún framework enorme, solo constructores simples con mappigns de bases de datos a propiedades y hace tus cosas básicas de CRUD / Find / Join. Para la mayoría de las cosas que hago, ni siquiera necesito escribir consultas personalizadas.
Ya he escrito todo esto antes en mi sitio , asegúrese de consultar los ejemplos básicos para obtener la idea.
La próxima versión que lanzaré incluye una combinación de una sola línea en Join on join (para recorrer una ''ruta'' a través de su base de datos), configuración de base de datos basada en i, soporte de base de datos cruzada, abstracción de base de datos super simple y un registrador estándar que cae vuelva a SQLite si su base de datos está inactiva.
Solo dales un grito si estás interesado en las actualizaciones, entonces me apresuro a hacerlo.
Ah, sí, y no lo olvides, también hay un buen generador visual de andamios llamado Pork.Generator . Intenta analizar la estructura de su base de datos y encontrar 1: 1 1: muchas y muchas: muchas relaciones, y puede generar automáticamente las clases para usted :-) relaciones encontradas en la base de datos http://www.schizofreend.nl/images/demo3. jpg
Tanto CodeIgniter ( http://codeigniter.com/user_guide/database/active_record.html ) como su bifurcación PHP5 Kohana ( http://docs.kohanaphp.com/libraries/orm ) contienen implementaciones del patrón ActiveRecord.
Zend_Db_Table y Zend_Db_Table_Row son bastante buenos en lo que describes. No necesita ningún archivo de configuración, la mayoría de los metadatos se "descubren" de la base de datos.
Técnicamente, estas clases no implementan el patrón ActiveRecord. En cambio, implementan los patrones Table Data Gateway y Row Data Gateway . Juntos, ofrecen un valor similar a ActiveRecord y, de alguna manera, son más flexibles que ActiveRecord.
Pero al igual que con cualquier ORM, inevitablemente hay algunas consultas SQL y operaciones que no puede hacer a través de la interfaz OO. Ningún ORM puede servir como una ventanilla única.
Nota al pie: trabajé en el proyecto Zend Framework durante poco más de un año, especialmente en el componente Zend_Db. Pero ya no trabajo para ellos.
Soy un gran admirador de Doctrine, que es un ORM completo que reemplazará a Propel como el ORM predeterminado de Symfony.
Tiene las cosas básicas de ORM que esperarías junto con un completo generador de consultas que me parece maravilloso.
Viene con un conjunto completo de herramientas de línea de comandos para administrar sus bases de datos. Por ejemplo, puede crear sus esquemas y accesorios en YAML, hacer que Doctrine genere clases basadas en su Esquema, crear la base de datos, crear el esquema basado en los modelos, luego rellenar la base de datos con sus accesorios, todo con una sola ./doctrine build-all-reload
También incluye soporte para migraciones de bases de datos y recientemente actualizó las migraciones para diferenciar automáticamente y generar sus modelos de migración.
Según sus quejas doctrinales, puede ejecutar un comando ./doctrine generate-models-db
o ./doctrine generate-yaml-db
para crear automáticamente modelos y archivos yaml respectivamente a partir de la configuración actual de su base de datos.
Otras sutilezas incluyen " Comportamientos " que hacen la vida mucho más fácil cuando implementan ciertos comportamientos en su esquema. Por ejemplo, puede agregar el comportamiento "Timestampable" a su archivo de clase. Doctine agrega automáticamente una columna ''created_at'' y ''updated_at'', las rellena, y cada $object->save()
que ejecuta actualiza automáticamente la columna ''updated_at''. Comportamientos más complejos incluyen i18n, versiones de tabla y árboles (aunque realmente solo NestedSet).
Personalmente, he estado extremadamente enamorado de Doctrine y me encantan cada vez que tengo oportunidad.
Compruebe el marco de trabajo de Maintainable. Aunque prefiero la generación de código sobre ActiveRecord (reflexión en tiempo de ejecución), encontré que el marco de Maintainable es fácil de usar, especialmente en términos de características de ORM.
http://framework.maintainable.com/mvc/3_model.php#c3.7
Si quieres un marco basado en la generación de código, prueba QCodo. Lo que Dcousineau dijo para Doctrine, puedo decir por Qcodo. Este es un marco impulsado por eventos que imita a .NET / Delphi. Sin embargo, puede codificar la función de generación y encontrar formas de disociar su clase generada del resto del marco. Por lo tanto, puede incrustar la clase generada dentro de otros marcos.
Otra opción que sigue la implementación de Ruby DataMapper es phpDataMapper . Obviamente es un Data Mapper en lugar de un ActiveRecord :).
Yo uso una capa de orm poco conocida llamada redbean. puedes encontrarlo aquí: http://www.redbeanphp.com . es absolutamente único en el sentido de que simplemente crea tablas, columnas e índices por sí mismo sin ningún archivo de configuración. ¡Creo que es un gran ahorro de tiempo!
Recomendaría Doctrine con Symfony. Aunque hay más que aprender, descubrirá que tiene las características que necesitará una vez que el proyecto crezca (CRUD, Marco de formulario, Plantillas de registro, DQL, Soporte de complementos, Comportamientos). Ambos proyectos tienen una comunidad muy activa y no debe encontrarse en un callejón sin salida, porque la mayoría de sus preguntas ya han sido respondidas en tutoriales oficiales o en un foro.
Si no le gustan las definiciones de base de datos en YAML, siempre puede usar ORM Designer o MySQL Workbench.
Pros
- Genera / modifica bases de datos / tablas / campos / varios atributos de tabla / campo sobre la marcha.
- No necesita instalación.
- No tiene config en absoluto.
- Solo necesita incluir biblioteca y especificar parámetros de enlace de db para comenzar a trabajar.
- Ha construido en soporte de localización.
- Tiene varios niveles de caché y permite extender el motor de caché.
- Funciona con muchas conexiones de bases de datos diferentes al mismo tiempo.
- Puede establecer relaciones entre tablas ubicadas en otros servidores de bases de datos.
- Extrae los atributos de tabla / campo utilizando los comentarios de clase y de documentación variable.
Contras
- Funciona solo con objetos. es decir, debe tener una clase definida y tener una instancia de clase para guardar la carga, etc.
- No tiene sitio pero tiene una carpeta de ejemplos.
Me gusta Idiorm y París y los uso en proyectos pequeños. Idiorm es el ORM real, mientras que París es la implementación de registro activo. Puedes usar cualquiera que prefieras.
También hay un tenedor llamado Granada , que está construido sobre Idiorm y París, y agrega soporte como impaciente carga, etc.
Object relational mapper (ORM) para PHP que se encuentra en la parte superior de una poderosa capa de abstracción de base de datos (DBAL). Una de sus características principales es la opción de escribir consultas de bases de datos en un dialecto SQL orientado a objetos patentado llamado Doctrine Query Language (DQL), inspirado en Hibernates HQL. Esto proporciona a los desarrolladores una poderosa alternativa a SQL que mantiene la flexibilidad sin requerir la duplicación de código innecesaria.