Eloquent ORM para PHP: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Eloquent ORM y para qué sirve?

\n\n

Eloquent ORM (Object-Relational Mapping) es una biblioteca integrada para trabajar con bases de datos en el framework PHP Laravel. Proporciona una forma elegante e intuitiva de interactuar con bases de datos relacionales (MySQL, PostgreSQL, SQLite, SQL Server) utilizando el patrón Active Record.

\n\n

¿Para qué sirve Eloquent?

\n
    \n
  • Abstracción de SQL: En lugar de escribir consultas SQL en bruto, trabajas con objetos PHP. Esto hace que el código sea más limpio, legible y seguro.
  • \n
  • Active Record: Cada modelo de Eloquent representa una tabla en la base de datos. Una instancia del modelo es una fila en esa tabla. Puedes leer, modificar y guardar datos simplemente trabajando con las propiedades del objeto.
  • \n
  • Protección contra inyección SQL: Eloquent utiliza PDO (PHP Data Objects) con consultas preparadas, lo que escapa automáticamente la entrada del usuario.
  • \n
  • Relaciones: Define y utiliza fácilmente relaciones entre tablas (uno a uno, uno a muchos, muchos a muchos, etc.).
  • \n
  • Colecciones: Los resultados de las consultas se devuelven como colecciones, objetos potentes que proporcionan muchos métodos útiles para procesar datos (map, filter, reduce, pluck, etc.).
  • \n
  • Mutadores y Accesores: Permiten transformar datos al guardarlos (mutadores) o al leerlos (accesores) de la base de datos.
  • \n
\n\n

Eloquent no es solo una biblioteca, es una parte fundamental del ecosistema de Laravel. Comprender Eloquent es necesario para un desarrollo eficaz en este framework.

\n\n

Instalación

\n\n

Eloquent ORM se instala automáticamente junto con el framework Laravel. Si creas un nuevo proyecto Laravel, Eloquent ya está listo para usar.

\n\n

Instalación a través de Composer (si usas Laravel):

\n
composer create-project laravel/laravel example-app\ncd example-app
\n\n

Instalación de Eloquent sin Laravel (Standalone):

\n

Puedes usar Eloquent fuera de Laravel, por ejemplo, en tu propio proyecto. Para ello, necesitarás instalar el paquete illuminate/database y configurar la conexión a la base de datos.

\n
composer require illuminate/database\ncomposer require illuminate/events // Para trabajar con eventos de modelos (opcional)
\n\n

Ejemplo de configuración de conexión (standalone):

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Illuminate\\Database\\Capsule\\Manager as Capsule;\n\n$capsule = new Capsule;\n\n$capsule->addConnection([\n    'driver'    => 'mysql',\n    'host'      => 'localhost',\n    'database'  => 'your_database',\n    'username'  => 'your_username',\n    'password'  => 'your_password',\n    'charset'   => 'utf8',\n    'collation' => 'utf8_unicode_ci',\n    'prefix'    => '',\n]);\n\n// Configurar la instancia global de Eloquent\n$capsule->setAsGlobal();\n\n// Iniciar Eloquent\n$capsule->bootEloquent();\n
\n\n

Inicio rápido con ejemplo de código

\n\n

Supongamos que tenemos una tabla users en la base de datos. Creemos un modelo Eloquent para trabajar con ella.

\n\n

Paso 1: Creación del modelo

\n

En Laravel, los modelos generalmente se almacenan en app/Models. Creemos el archivo User.php:

\n
<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n    // Eloquent vinculará automáticamente este modelo con la tabla 'users'\n    // El nombre de la tabla se determina por el nombre de la clase en plural (snake_case)\n    // Si la tabla se llama de otra manera, especifica la propiedad $table\n    // protected $table = 'my_users';\n\n    // Especifica qué campos se pueden asignar masivamente (para protección contra mass-assignment)\n    protected $fillable = ['name', 'email', 'password'];\n}\                    

Recommendations