Relazione uno a molti in un modello dati con Laravel Eloquent ORM

Relazione uno a molti in un modello dati con Laravel Eloquent ORM
Nella modellazione dei dati Entity Relationship, esiste una relazione uno a molti quando un record in una tabella è associato a uno o più record di un'altra tabella.

La cardinalità indica la natura della relazione tra le entità, cioè l'entità padre può possedere più occorrenze di entità figlio.

Vediamo come laravel model ci aiuta nella gestione della relazione uno a molti, semplificandone le query.

Tempo di lettura stimato: 4 minuti



Relazione Uno a Molti

Una relazione uno a molti non è una proprietà dei dati stessi, ma della relazione tra le tabelle. Garantisce che ogni riga di una tabella corrisponda a più di una riga di un'altra tabella.



È una rappresentazione dell'associazione tra due entità in cui un'entità (il lato "uno") può essere collegata a più istanze di un'altra entità (il lato "molti"), ma ciascuna istanza sul lato "molti" è associata a una sola esempio dal lato “uno”.



Se vuoi approfondire il caso della relazione uno a uno con Laravel model, allora leggi questo articolo Come gestire la relazione uno a uno in un modello dati con Laravel Eloquent ORM



Consideriamo ad esempio il database di una libreria. Potresti avere un'entità chiamata Editore e un'altra chiamata Libro. Una relazione uno a molti tra editore e libro indica che un editore può pubblicare molti libri, ma ogni libro è pubblicato da un solo editore.



Laravel Eloquent ORM Relazione Uno a Molti

Laravel Eloquent fornisce metodi completi per gestire le relazioni tra le tabelle del database. In questo articolo vedremo la relazione uno a molti, e come impostarla.



In una relazione uno a molti, un'entità (chiamiamola A) può essere associata a più istanze di un'altra entità (chiamiamola B). Tuttavia, ciascuna istanza di B appartiene a una sola istanza di A. Ad esempio, consideriamo uno scenario in cui un partito politico ha molti candidati. Ogni candidato appartiene a un partito politico, ma un partito politico può avere più candidati.



Impostazione relazione uno a molti

Innanzitutto, andiamo a creare i model sia per i partiti politici che per i candidati. Usiamo il comando artisan per generare questi model:



php artisan make:model PoliticalParty

php artisan make:model Candidate

Definiamo ora le relazioni nei modelli: nel model PoliticalParty, definiamo la relazione utilizzando il metodo hasMany



// app/Models/PoliticalParty.php

public function candidates()

{

return $this->hasMany(Candidate::class);

}

Nel model Candidate, andiamo a definire la relazione inversa utilizzando il metodo belongsTo



// app/Models/Candidate.php

public function politicalParty()

{

return $this->belongsTo(PoliticalParty::class);

}

L'impostazione dei laravel model per la definizione della relazione uno a molti, funziona se la tabella dei Candidati ha una chiave esterna. La chiave esterna deve essere definita su un campo denominato political_party_id, per collegare i candidati ai rispettivi partiti politici.



Una volta definite le relazioni, possiamo lavorare utilizzando le proprietà dinamiche di Eloquent. Ad esempio, per recuperare tutti i candidati di uno specifico partito politico, scriveremo questo:



// Find political party with id 1

$party = PoliticalParty::find(1);



// extract all candidates of political party where id is 1

$candidates = $party->candidates;

Esempio CRUD uno a molti

Inserire

Per aggiungere un nuovo candidato a un partito politico, creiamo una nuova istanza Candidate e la associamo al PoliticalParty appropriato:



// candidate John White of Political Party with id 1

$candidate = new Candidate();

$party->candidates()->save($candidate);

Leggere

Per recuperare i candidati di un partito politico specifico



// Get Party's candidates

$candidates = $party->candidates;

Per recuperare il partito politico di un candidato specifico



// Get Party of a candidate

$party= $candidate->politicalParty;

Aggiornare

Per modificare i dati di uno specifico candidato, appartenente a un partito politico



$candidate = Candidate::find(1);

$candidate->update();

Cancellare

Rimuovere un candidato da un partito politico



$candidate = Candidate::find(1);

$candidate->delete();

Sfruttando le relazioni uno a molti in Laravel Eloquent, possiamo organizzare in modo efficiente i dati tra le tabelle correlate. Una buona conoscenza di queste relazioni, ci consente di creare applicazioni robuste ed efficienti.



Letture Correlate

- Come fa il motore di ricerca Google a comprendere i testi ?

- Lavoro e innovazione digitale: nasce Original skills, modello di analisi in cloud per la valutazione scientifica della personalità e delle soft skills

- Business Model Innovation, quali sono le potenzialità del modello

- Cosa è il tipo di attività e come configurare la programmazione automatica in Microsoft Project

- Cos'è Laravel Eloquent, come si usa, tutorial con esempi

Ercole Palmeri


Ercole Palmeri
#laravel #Tutorial
https://bloginnovazione.it/laravel-model/47238/

Commenti

Post popolari in questo blog

Come impostare i giorni lavorativi in ​​Microsoft Project: calendario di progetto