0%
Dominar Eloquent ORM: la guía completa

Dominar Eloquent ORM: la guía completa

Guía completa para dominar Eloquent ORM, la herramienta de gestión de bases de datos de Laravel

I

InSkillCoach

· min

Dominar Eloquent ORM: la guía completa

Eloquent ORM es uno de los componentes más potentes de Laravel. Simplifica enormemente la interacción con la base de datos al permitir manipular los datos como objetos PHP.

Los fundamentos de Eloquent

Creación de un modelo

php artisan make:model User -m

Estructura de un modelo básico

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden = ['password'];
}

Relaciones con Eloquent

One-to-One

public function profile()
{
    return $this->hasOne(Profile::class);
}

One-to-Many

public function posts()
{
    return $this->hasMany(Post::class);
}

Many-to-Many

public function roles()
{
    return $this->belongsToMany(Role::class);
}

Consultas avanzadas

Filtrado de datos

// Búsqueda simple
User::where('active', true)->get();

// Consultas complejas
User::where('age', '>', 18)
    ->whereHas('posts', function($query) {
        $query->where('published', true);
    })
    ->get();

Agregaciones

// Recuento
User::count();

// Suma
Order::sum('total');

// Media
Rating::avg('score');

Buenas prácticas

1. Uso de los scopes

public function scopeActive($query)
{
    return $query->where('active', true);
}

// Uso
User::active()->get();

2. Accesores y mutadores

// Accesor
public function getFullNameAttribute()
{
    return "{$this->first_name} {$this->last_name}";
}

// Mutador
public function setPasswordAttribute($value)
{
    $this->attributes['password'] = bcrypt($value);
}

3. Colecciones

$users = User::all()->filter(function ($user) {
    return $user->posts_count > 3;
})->map(function ($user) {
    return $user->only(['id', 'name', 'email']);
});

Optimización del rendimiento

1. Eager Loading

// Sin Eager Loading (problema N+1)
$books = Book::all();
foreach ($books as $book) {
    echo $book->author->name;
}

// Con Eager Loading
$books = Book::with('author')->get();

2. Chunking para grandes volúmenes de datos

User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // Procesamiento por lotes
    }
});

Conclusión

Eloquent ORM es una herramienta potente que simplifica enormemente la gestión de las bases de datos en Laravel. Si dominas sus funcionalidades, podrás crear aplicaciones más eficientes y fáciles de mantener.

Recursos complementarios

InSkillCoach

Acerca de InSkillCoach

Experto en formación y tecnologías

Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.

Certificaciones:

  • AWS Certified Solutions Architect – Professional
  • Certificaciones de Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.2k
328

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!