co-developers/ci-doctrine

Librería de CodeIgniter 3 para utilizar Doctrine como ORM

Installs: 40

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 1

Open Issues: 0

Type:codeigniter-library

v2.0.2 2017-11-19 20:41 UTC

This package is auto-updated.

Last update: 2022-11-07 02:12:45 UTC


README

Librería de CodeIgniter 3 para utilizar Doctrine como ORM.

Requisitos

CI Doctrine necesita PHP ^5.5.9|>=7.0.8 y CodeIgniter 3.x para poder ser ejecutado.

Instalación

Instale Composer en su equipo y luego ejecute el comando composer require co-developers/ci-doctrine dentro de la raíz de su proyecto en CodeIgniter.

Configuración de la librería

Activar Composer en CodeIgniter

Para activar Composer en CodeIgniter abra el archivo application/config.php e indique la ruta del archivo autoload.php de Composer en el array $config de la siguiente manera: $config['composer_autoload'] = 'vendor/autoload.php';.

Copiar el archivo database.yml

El archivo application/libraries/doctrine/database.yml contiene la configuración de la conexión a la base de datos que utiliza Doctrine. Antes de comenzar a utilizar CI Doctrine debe copiar éste archivo en la carpeta application/config. Dentro del yml, la clave active_group le indica a Doctrine que grupo de parámetros utilizar para acceder a la base de datos (development, testing o production).

Carga automática de la librería

Para cargar la librería automaticamente en CodeIgniter, abra el archivo application/config/autoload.php y agregue el string 'doctrine' al array $autoload['libraries']. Recuerde desactivar la librería Database de CodeIgniter.

Creando la estructura de carpetas

Antes de comenzar a crear entidades se deben crear las siguientes carpetas:
  • application/ORM/Entity: En esta carpeta se crean las entidades.
  • application/ORM/Repository: En esta carpeta se generan los repositorios de cada entidad.
  • application/ORM/Proxy: En esta carpeta se generan las clases Proxy de cada entidad.
Una vez que se generaron dichas carpetas, se puede comenzar a crear las entidades y los repositorios. Las clases Proxy se generan de forma automática por carga diferida (Lazy Loading).
Recuerde que antes de generar cada entidad debe especificar el namespace en el archivo de declaración de la clase. Lo mismo aplica para los repositorios. El namespace de las entidades es Entity y el de los repositorios es Repository.

Copiar y configurar cli-config.php (Doctrine Console)

Para poder utilizar la consola de Doctrine, copie el archivo application/libraries/doctrine/cli-config.php en la raíz de su proyecto en CodeIginiter, o sea, en el mismo directorio del controlador frontal index.php y de la carpeta vendor de Composer. Luego verifique, en el mismo archivo, que la variable $application_path sea correcta (ruta relativa de la carpeta application de CodeIgniter). Una vez realizado este paso, ya puede ejecutar la consola de Doctrine desde la línea de comandos para crear entidades, repositorios, clases Proxy, crear las tablas en la base de datos a partir de los metadatos, etc. Para ver la lista de comandos disponibles ejecute en la shell $ php vendor/bin/doctrine en linux o vendor\bin\doctrine en Windows, desde la raíz de su proyecto.

Copiar el archivo MY_Controller.php (opcional)

Si usted lo desea, puede utilizar la clase MY_Controller declarada en el archivo application/libraries/doctrine/MY_Controller.php como clase controladora base en CodeIgniter. Si extendemos todos nuestros controladores de MY_Controller tenemos disponibles la instancia al EntityManager en el atributo $this->em dentro de cada controlador. Para comenzar a utilizar esta extensión del controlador del core primero debemos activar la carga automática de la librería y luego debemos copiar el archivo application/libraries/doctrine/MY_Controller.php en la carpeta application/core.

Copiar el archivo Doctrine_cli.php (opcional)

Si usted lo desea, puede utilizar el controlador Doctrine_cli declarado en el archivo application/libraries/doctrine/Doctrine_cli.php para ejecutar los comandos de la consola de Doctrine desde CLI con CodeIgniter de una forma más simple. Copie el archivo application/libraries/doctrine/Doctrine_cli.php en la carpeta application/controllers.
Para utilizar Doctrine_cli ejecute en la shell php index.php doctrine_cli/comando, desde la raíz de su proyecto, donde comando puede ser una acción del controlador que corresponde a un comando específico de la consola de Doctrine. Lea la sección Comandos de Doctrine CLI para ver la lista de acciones disponibles.

Comandos de Doctrine CLI

El controlador Doctrine_cli.php dispone de las siguientes acciones:
  • doctrine_cli/generate_entities: Genera las entidades a partir de los metadatos. Recuerde que antes de ejecutar este comando, debe generar las entidades sólo con sus atributos y metadatos en formato de anotaciones en la carpeta application/ORM/Entity. Los métodos getters y setters se generan automáticamente por dicho comando.
  • doctrine_cli/generate_proxies: Genera las clases Proxy a partir de las entidades en la carpeta application/ORM/Proxy.
  • dontrine_cli/generate_repositories: Genera los repositorios a partir de los metadatos de las entidades. Se generan en la carpeta application/ORM/Repository.
  • doctrine_cli/create_schema: Genera toda la estructura de la base de datos a partir de los metadatos de las entidades.
  • doctrine_cli/update_schema: Actualiza la estructura de la base de datos a partir de los metadatos de las entidades. Se recomienda usar el parámetro --force.
  • doctrine_cli/convert_mapping_from_db: Realiza ingenieria reversa de la base de datos. Específicamente genera los metadatos en formato de anotaciones a partir de la estructura de la base de datos. Los metadatos son especificados en las clases de las Entidades.

Metadatos de las entidades

CI Doctrine utiliza anotaciones para especificar los metadatos de las entidades, ya que es la forma recomendada actualmente por Symfony. Por lo tanto ingrese los metadatos en los archivos de las entidades a través de las anotaciones.