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.