Eloquent ORM - Query Builder

Tots dos proporcionen una manera convenient i segura dinteractuar amb la base de dades.

A Laravel, el sistema de consultes es maneja principalment a través d'Eloquent, el seu ORM (Object-Relational Mapping), i el Query Builder. Tots dos proporcionen una manera convenient i segura dinteractuar amb la base de dades. Aquí et dono una visió general de com funcionen:

Eloqüent ORM

Eloquent és l'ORM per defecte de Laravel i permet treballar amb la base de dades usant models d'objectes. Cada taula de la base de dades té un "Model" corresponent que s'utilitza per interactuar amb aquesta taula.

Exemple bàsic:

Si tens una taula users, pots crear un model User. Aquest model et permet fer operacions a la taula usersde manera molt senzilla.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // ...
}

Uso de Eloquent para consultas:

// Obtener todos los usuarios
$users = User::all();

// Obtener un usuario por ID
$user = User::find(1);

// Consultas con condiciones
$users = User::where('active', 1)
             ->orderBy('name', 'desc')
             ->take(10)
             ->get();

Generador de consultes

El Query Builder de Laravel és una interfície més directa a la base de dades que permet fer consultes sense necessitat de models Eloquent. És útil quan no necessites tota la funcionalitat d'Eloquent o quan treballes amb taules que no tenen models associats.

Exemple bàsic:

use Illuminate\Support\Facades\DB;

$users = DB::table('users')->get();

// Consulta con condiciones
$users = DB::table('users')
           ->where('votes', '>', 100)
           ->get();

Diferències Clau

  • Eloquent: Basat en models, ideal per a aplicacions que segueixen el patró MVC, amb relacions entre taules i on necessites una abstracció completa de la capa de base de dades.
  • Query Builder: Més flexible per a consultes ad-hoc i operacions en bases de dades sense un model Eloquent definit. Menys sintaxi i més adequat per a consultes complexes i dinàmiques.

Millors Pràctiques

  • Mantingues la lògica de consulta als teus models oa classes/repositoris separats per millorar l'organització i mantenibilitat del codi.
  • Utilitza les relacions d'Eloquent per fer consultes relacionades de manera eficient.
  • Aprofita les funcionalitats d'Eloquent com Soft Deletes, Mutators, Scopes, etc. per escriure un codi més net i mantenible.

Laravel proporciona una gran flexibilitat i potència en el sistema de consultes, facilitant tant tasques simples com operacions complexes a la base de dades.