laravel

Laravel Eloquent ORM Tutorial

Laravel Eloquent ORM Tutorial
Eloquent ORM (Object Relation Mapper) er enkel å bruke for brukere som vet hvordan de skal bruke objekter i PHP. ORM er et viktig trekk ved Laravel-rammeverket, betraktet som et kraftig og dyrt trekk ved Laravel. ORM fungerer med databaseobjekter og brukes til å lage forhold til databasetabeller. Hver tabell i databasen er kartlagt med en bestemt veltalende modell. Modellobjektet inneholder forskjellige metoder for å hente og oppdatere data fra databasetabellen. Eloquent ORM kan brukes med flere databaser ved å implementere ActiveMethod. Denne funksjonen gjør databaserelaterte oppgaver, for eksempel å definere relasjoner, enklere ved å definere databasetabellene. Denne veiledningen forklarer hvordan du bruker Laravel Eloquent ORM i Laravel-prosjektene dine.

Forutsetninger

Før du starter denne opplæringen, må du utføre følgende oppgaver:

  1. Installer en ny kopi av Laravel-prosjektet
  2. Opprett databasetilkoblingen

Lag bord

For å fullføre trinnene i opplæringen, må du opprette to tabeller i databasen. Dette er produsentens bord og produktbordet. Forholdet mellom disse to tabellene vil være henholdsvis en for mange. Kjør følgende kommando for å opprette migreringsfilen for å lage strukturen til produsenter bord.

$ php håndverksmerke: migrasjon create_manufacturer_table

Åpne migreringsfilen fra database \ migrering mappen og endre opp() metode med følgende kode. Tabellen vil inneholde seks felt: ID, navn, adresse, telefon, created_at og updated_at.

offentlig funksjon opp ()

Skjema :: lage ('produsenter', funksjon (Blueprint $ tabell)
$ tabell-> id ();
$ table-> string ('name') -> unik ();
$ tabell-> tekst ('adresse');
$ table-> streng ('telefon');
$ tabell-> tidsstempler ();
);

Kjør følgende kommando for å opprette en migreringsfil for å lage strukturene til Produkter bord.

$ php håndverksmerke: migrasjon create_product_table

Åpne migreringsfilen fra database \ migrering mappen og endre opp() metode med følgende kode. Tabellen vil inneholde syv felt: ID, navn, pris, produsent-ID, opprettet_på og oppdatert_på. Her er manufacturing_id en fremmed nøkkel for Produkter bord.

offentlig funksjon opp ()

Schema :: create ('products', function (Blueprint $ table)
$ tabell-> id ();
$ table-> string ('name') -> unik ();
$ tabell-> desimal ('pris', 10, 2);
$ table-> bigInteger ('produsent_id') -> usignert ();
$ table-> utenlandske ('produsent_id') -> referanser ('id') -> på ('produsenter');
$ tabell-> tidsstempler ();
);

Kjør følgende migrer kommando for å opprette tabellene i databasen.

$ php håndverker migrerer

Lag modeller

Du må også opprette to modeller, navngitt Produsent og Produkt, for de tidligere opprettede tabellene. Kjør følgende kommando for å opprette Produsent modell.

$ php håndverkermerke: modellprodusent

Åpne modellen fra app mappen og endre koden med følgende kode. $ fyllbar brukes til å definere obligatoriske felt i produksjon bord. De Produkter() metoden brukes til å angi relasjonstypen med Produkter bord.

navneområdet App;
bruk Illuminate \ Database \ Eloquent \ Model;
klasse Produsent utvider modell

beskyttet $ fyllbar = [
'navn', 'adresse', 'telefon',
];
produkter for offentlige funksjoner ()

returner $ dette-> hasMany ('App \ Product');

Kjør følgende kommando for å opprette Produkt modell.

Åpne modellen fra app mappen og endre koden med følgende kode. $ fyllbar brukes til å definere obligatoriske felt i Produkter bord. De produsenter () metoden brukes til å angi relasjonstypen med produserer bord.

$ php artisan make: modell Produkt
navneområdet App;
bruk Illuminate \ Database \ Eloquent \ Model;
klasse Produkt utvider modell

beskyttet $ fyllbar = [
'navn', 'pris', 'produsent_id'
];
produsenter av offentlige funksjoner ()

returner $ dette-> belongTo ('App \ Manufacturer');

Lag kontrollere

Kjør følgende kommandoer for å opprette ManuController og ProductController.

$ php kunsthåndverk: kontroller ManuController
$ php håndverksmerke: controller ProductController

CRUD-operasjoner ved bruk av Eloquent ORM

CRUD-operasjonene vises nedenfor ved først å legge til metoder for disse to kontrollerne.

Sette inn data

Produsent Tabell

Legg til Produsent modellen på toppen av ManuController. Deretter legger du til følgende kode i ManuController modell for å sette inn to poster i produserer bord.

offentlig funksjon create_data ()

Produsent :: create ([
'name' => 'ABC Trade',
'adresse' => '34, Mirpur, Dhaka ',
'telefon' => '01878562323'
]);
Produsent :: create ([
'name' => 'Rahim Afroze',
'adresse' => '123, Dhanmondi, Dhaka',
'telefon' => '01878562900'
]);
ekko "Produsentdata satt inn";

Legg til følgende rute i ruter \ web.php filen for å utføre create_data () metode.

Rute :: get ('manu', '[email protected] _data');

Følgende utdata vises etter at du har angitt nettadressen nedenfor i nettleseren.

http: // localhost: 8000 / manu

Produkt Tabell

Legg til Produkt modell på toppen av ProductController. Deretter legger du til følgende kode i ProductController å sette inn tre poster i Produkter bord.

offentlig funksjonsindeks ()

Produkt :: lage ([
'name' => 'TV 32 Inche',
'pris' => 10000,
'produsent_id' => 1
]);
Produkt :: lage ([
'name' => 'Walton Kjøleskap',
'pris' => 20000,
'produsent_id' => 1
]);
Produkt :: lage ([
'name' => 'IPS 7832',
'pris' => 25000,
'produsent_id' => 2
]);
ekko "Produktdata satt inn";

Legg til følgende rute i ruter \ web.php filen for å utføre indeks () metode.

Rute :: get ('produkt', '[e-postbeskyttet]');

Følgende utdata vises når du har angitt URL-en nedenfor i nettleseren.

http: // localhost: 8000 / produkt

Velg Data

Legg til følgende metode inne i ManuController for å hente alle poster av produksjonens tabell og tilhørende poster for Produkter bord.

offentlig funksjon select_data ()

$ produsenter = produsent :: all ();
foreach ($ produsenter som $ manu)
$ produkter = Produkt :: hvor ('produsent_id', $ manu-> id) -> get ();
ekko "Produsent: $ manu-> name
";
foreach ($ produkter som $ pro)

ekko "

Produktnavn: $ pro-> navn

";
ekko "

Produktpris: $ pro-> pris


";


Legg til følgende rute i ruter \ web.php filen for å utføre select_data () metode.

Rute :: get ('product_detail', '[email protected] _data');

Følgende utdata vises etter at du har angitt nettadressen nedenfor i nettleseren.

http: // localhost: 8000 / product_detail

Oppdater data

Legg til følgende metode inne i ManuController for å oppdatere posten til Produkter tabell som inneholder id verdi 2.

offentlig funksjon oppdateringsdata ()

$ produkt = Produkt :: finn (2);
ekko "Produktdetaljer før oppdatering:
";
ekko "

Produktnavn: $ produkt-> navn

";
ekko "

Produktpris: $ produkt-> pris


";
$ product-> name = 'Walton Blender';
$ produkt-> pris = 1000;
$ produkt-> lagre ();
ekko "Produktdetaljer etter oppdatering:
";
ekko "

Produktnavn: $ produkt-> navn

";
ekko "

Produktpris: $ produkt-> pris


";

Legg til følgende rute i ruter \ web.php filen for å utføre oppdateringsdata () metode.

Rute :: get ('update_data', '[email protected] _data');

Følgende utdata vises når du har angitt URL-en nedenfor i nettleseren.

http: // localhost: 8000 / update_data

Slett data

Legg til følgende metode inne i ManuController for å slette flere poster fra Produkter tabell og en enkelt plate fra produsenter bord.

offentlig funksjon delete_data ()
// Slett flere data
Produkt :: ødelegge ([1, 2]);
// Slett enkeltdata
Produsent :: ødelegge (1);
ekko "Data slettes.";

Legg til følgende rute i ruter \ web.php filen for å utføre delete_data () metode.

Rute :: get ('delete_data', '[email protected] _data');

Følgende utdata vises når du har angitt URL-en nedenfor i nettleseren.

http: // localhost: 8000 / delete_data

Videoopplæring

Konklusjon

Denne veiledningen viste deg hvordan du oppretter relasjoner mellom tabeller og hvordan du implementerer CRUD-operasjoner ved hjelp av Eloquent ORM. Selv nye Laravel-brukere vil kunne forstå noen grunnleggende bruksområder for Eloquent OPM etter å ha lest denne veiledningen.

Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider er det tolvte tilskuddet til Tomb Raider-serien - et action-eventyrspill-franchise opprettet av Eidos Montreal. Spillet ble ...
Hvordan øke FPS i Linux?
FPS står for Bilder per sekund. FPSs oppgave er å måle bildefrekvensen i videoavspilling eller spillprestasjoner. Med enkle ord betegnes antall uavbru...
Topp Oculus App Lab-spill
Hvis du er Oculus-hodesettinnehaver, må du være klar over sideloading. Sidelading er prosessen med å installere ikke-butikkinnhold på hodesettet. Side...