>> Dus een van deze, de mooiste kenmerken
van de Laravel kader is de Eloquent ORM
en zoals David opgemerkt, een ORM is een object relational mapper
waarmee u gegevens in kaart base rijen om objecten in php
en kunt u de creëren verenigingen
tussen deze verschillende tabellen echt gemakkelijk zonder
om veel te schrijven SQL onder de motorkap
en geeft je een echt mooie syntax voor het zoeken
voor een individuele fiche.
Dus in plaats van te zeggen, selecteert, ster, van cursussen
waar iets anders zou zeggen, cursussen, vinden [onverstaanbaar]
of cursussen een van de vakken die je zoekt
en het zou wat bepalen SQL verondersteld te schrijven
en goed uit te voeren voor u en geven het allemaal terug naar je
een object dat u kunt dan weer
op het scherm onroerend goed.
Dus de manier waarop de welsprekende RM werkt is om ... de conventie
dat gebruikt is dat als je hebt een data base tabel
die zo is meervoud bijvoorbeeld cursussen,
zou je een klasse te maken in de map modellen oproep cursus
en dat is alles wat je zou hoeft te doen is te zeggen,
klasse natuurlijk breidt welsprekend en het
onder de motorkap automatisch veronderstelt
dat wat de tafel naam is, wat het ID is,
dus als er een auto het verhogen ID en er is een
die wordt geleverd met Laravel door default is het gebruiker genaamd
en het maakt gebruik van een aantal vooraf kenmerken genoemd interfaces,
die we niet gaan over te gaan,
maar je kunt klasse zien gebruiker, breidt welsprekend,
en u kunt de naam tabel
als je niet na de conventie
van het meervoud ... met een meervoud tabelnaam
en een bijzondere klasse naam.
Maar we zullen gaan maken een voor gegeven voorbeeld
van voor, we gaan en het creëren van een voor cursussen.
Dus we natuurlijk dot php doen
en doe klasse natuurlijk breidt welsprekend.
En dus ga ik springen in de php mijn admin
en eigenlijk re-naam deze tabel om cursussen.
Dus nu heb ik tafel een cursus met hetzelfde voorbeeld data
vanaf de eerste catalogus die David had genoemd en nu
dat deze cursus is
in het model directory we kan verder gaan en zeggen, natuurlijk,
beperken 10 dus alleen wij wil 10 records te krijgen,
krijgen en we zullen zeggen dit is cursussen.
En dus nu zijn we gaan om verder te gaan
en laten we zorgen voor een beter zicht dit spul eigenlijk weer te geven.
Dus heb ik eigenlijk gemaakt een blade sjabloon eerder
en ik ga gewoon door te gaan en kopieer het hier gewoon
te besparen, een paar minuten van de tijd.
[Achtergrond geluid]
Oke, dus heb ik een,
in de weergave map I creëerde een cursussen dot mes
en dus ik ga het oog doen maken cursussen, en ik ga
aan een variabele cursussen passeren met het ... eigenlijk dat gaat niet
om te werken, maar een tweede, cursussen titel.
Oke, dus het werkte niet want er staat toegang geweigerd
voor de gebruiker route op de lokale host.
Dus kan iemand mij vertellen wat ze denkt dat het probleem hier?
Dus het probleem is dat ik nooit vertelde Laravel wat ... wie ik ben
in een poging om toegang te krijgen de data base,
het doet niet automatisch weten dat ik in staat ben
toegang tot de database Ik probeer op te vragen.
Dus in de map config
die ik eerder had vermeld Er is een databank dot php
bestand en hier moeten we zeggen dat we zijn gebruikersnaam, jharvard
en wachtwoord karmozijn en nu als we doorgaan en doen
dat onbekende gegevens base, data base.
Dus de data base dat we proberen
te halen wordt genoemd cursussen [onverstaanbaar]
en dit keer het werkte.
Dus wat is het hier wordt het laat me ga je gang
en spring terug naar de controller.
Dus ik deed cursussen, beperken tien, krijgen,
dus ik zei dat ik alleen maar wil 10 rijen in de database,
halen die voor hen, en zetten ervan in deze vakken variabele.
Dus deze cursus variabele is nu een object
die bevat verschillende kolommen
die ik echt kan toegang gemakkelijk in de sjabloon.
Dus ik voor elke cursus als Natuurlijk ... ga je gang en in te zoomen,
en ik natuurlijk zeggen titel of vakbeschrijving
en het gaat vooruit en uitgangen ongeacht de data base rij
is er.
Dus zoals je kunt zien zijn veel eenvoudiger maar gemakkelijk om reden
met dan te moeten schrijf de SQL hand
en dan uitzoeken hoe, hoe het in kaart in een object
maar waar het echt krachtig is wanneer, zoals David sorteren
van had genoemd eerder, wanneer u begint
verschillende tafels dat u wilt koppelen
met andere via de foreign keys,
U kunt deze objecten hebben het zware werk doen
van de query en het uitzoeken wat paren met wat en hoe
om verder te gaan en maken dat.
Dus als we kijken naar ... laten vooruit
en spring terug hier echt snel, dus databank config hoe het werd
daar [onverstaanbaar] sla deze voor nu.
Dus de verschillende in mijn ... verschillende types
van de betrekkingen standaard enkele van de ... zijn er een paar meer
dan deze maar dit zijn de 4 meest voorkomende zijn een heeft een,
een heeft veel, het ook behoort, en het behoort tot veel relatie.
Dus je kunt een soort van denken aan een heeft een als,
u weten of u alleen hebben een van iets,
dus in dit geval een rekening, dit is gewoon echt dumbed
beneden vereenvoudigd voorbeeld regeling
maar een account heeft slechts een leverancier in dit geval.
Dus er is een leverancier ID en een leverancier
dus in tabel van de rekening er is een leverancier ID
en een leverancier zelf heeft een ID en er is maar een soort
een een op een relatie.
Overwegende dat een ... er is een te behoort
dus een bestelling kon alleen plaatsen van een klant,
terwijl een klant misschien een bos hebben
van orders alleen de volgorde behoort tot een enkele klant,
je kunt niet 3 verschillende mensen het kopen van hetzelfde
in dit voorbeeld.
En dan een heeft veel, zoals ik al zei de klant heeft veel orders
maar niet andersom rond en dan behoort
veel meer is de geavanceerde relatie
dat David ging voorbij eerder waar u sorteren
join twee tabellen via een intern tafel,
dus in dit geval samenstellen, onderdelen is een join
van de vergaderingen en onderdelen of een voorbeeld
die we eerder kregen,
de cursussen ... de instructeurs werden vergezeld
door een cursus instructeur join tabel en in dit geval
en in het geval Laravel's,
het eigenlijk niet vereisen primaire automatische uitvoering ID
op de join tabel hoewel je er een kan hebben,
het eigenlijk niet zijn een of ervoor
aan de manier waarop het werkt.
Dus laten we verder gaan en het opzetten van een soort
van een paar verschillende objecten gebaseerde op de lay-out van de data base
dat we nu hebben en dus we gaan houden cursussen
als onze uitvalsbasis object, maar we zijn gaan om te zeggen dat in het kijken
aan de data base tabel, de cursus heeft velen vergadering
dus het heeft velen vergadering malen, het behoort tot een afdeling
en het behoort tot zowel veel instructeurs en eisen.
Dus er meerdere kunnen zijn vereisten voor de cursus
maar eisen kan gedeeld door verschillende cursussen.
Dus laten we verder gaan en kijken of we kunnen modelleren
dat een beetje met behulp van de welsprekende modellen
dus je hebt ... laten we beginnen met de instructeur dot [onverstaanbaar]
dus vergelijkbaar met vroeger, we zijn gaan om verder te gaan en te zeggen:
klasse instructeur, breidt welsprekende
en dus dit zou neem aan dat als ik al eerder zei,
dat er een meervoud van instructeur instructeurs
en dit is de tabel die zal worden mapping.
En nu op de cursus, we zullen doorgaan
en zeggen ... we zullen een methode te creëren
zodat de publieke functie instructeurs,
het publiek ... sorry ik ben ... ja de publieke functie instructeurs
en de manier waarop sets Laravel
betrekkingen wordt u weer een dit behoort tot vele instructeur,
dus dit vertelt ons nu dat de cursus is gekoppeld
met de instructeur model, dat is alles wat we moesten doen
op te zetten die relatie en nu als we
in deze lus hier kunnen we zeggen, zo omdat het een heeft ... het behoort
aan vele relaties er kan een of meer instructeurs.
Dus het is een matrix of het is een object dat er meer moet
dan een instructeur op het dus we gaan ook lus
hier en zeggen: voor elke Natuurlijk instructeurs als instructeur
en dan kiezen uit de eerste de naam en de achternaam,
Ik geloof dat zijn de kolommen zodat de eerste en de laatste,
het kan de eerste zijn naam, achternaam.
Dus eerste en de laatste het is ingesteld in deze studiegids
en laten we verder gaan en zien of dat maakt
dus instructeurs ... yeah it lijkt alsof ze tonen
up tenzij er niet een bijbehorende
dus in dit geval zijn geen instructeurs vermeld
met die cursus, maar in alle de andere gevallen zie je een
of meer instructeurs als gedefinieerd in de relatie.
Dus een ding dat is een soort van een gotcha soms met ORM
als dit is dat je doorgaat en definiëren een relatie
en je denkt oke het is behoren het ophalen van mijn gegevens
als ik hier ben op zoek alles is rendering
op het scherm goed, alles in orde is,
het doet allemaal de SQL achter de schermen voor mij
maar wat hier gebeurt is
wanneer het eerst haalt de cursussen het niet weet
dat u ook gaat worden op zoek naar de instructeurs.
Dus het haalt alle cursussen voor u en dan gaat het
om al deze gegevens in te geven het naar het oordeel hier
en dan wordt deze voor elke cursus instructeurs
en het zegt oke ik doe niet weten wat de instructeurs zijn
maar laat me gaan halen die
en het is dit elke doen enkele keer dat je gaat
door de cursus lus.
Dus elke keer dat je bent proberen om een ​​cursus te geven
op het scherm het is een soort van laat om alles te zeggen dat ik nodig
te vinden wat de instructeurs zijn voor deze rij
en dus het doet n plus een vraag
dus het doet echter veel loops je hebt het is een ander doet
opvragen terwijl dat niet de meest efficiënte manier om te gaan
over het ophalen en het weergeven van uw gegevens.
Dus de manier om alles te halen up front in Laravel is
te zeggen natuurlijk met instructeurs beperken tien get
en nu weet het lijkt niet anders alleen voor het oog
maar in plaats van het doen van I denk dat het zou zijn 12 queries
of zo achter de schermen nu het is alleen doet twee of drie.
Dus we kunnen gaan, we kunnen blijven op die manier en stel
up nog een paar relaties dus wat waren enkele
andere vele zitting.
Dus vergelijkbaar we een model genaamd vergadering,
class [onverstaanbaar] breidt welsprekende
en het moet ... alles moeten worden opgevangen hier
als we kijken naar de tafel bijeenkomsten het heeft een auto incrementing ID
het is meervoud dus alles moet goed werken als we proberen
de vergaderingen weer te geven.
Dus laten we terug gaan naar, we dit al uitgelegd
en het was een nieuw relatie ... sorry het was een
heeft [onverstaanbaar] vergadering, dus laten we eens kijken naar de vergadertafel
en zien wat we misschien willen hier weer te geven.
Dus laten we gewoon weer ... eigenlijk Ik heb een template set
voor deze, zal ik gewoon pak een kleine tafel
en plak deze in hier.
Dus ik ga om te laten zien slechts enkele gegevens
over de andere koers vergaderingen en [onverstaanbaar].
Kijken of ik iets gemist hier, vergaderingen, had ik het enkelvoud
dus nu hebben we een soort van de tabel hier
over de verschillende vergaderingen, wat het type zijn,
wanneer het begint, eindigt etcetera.
Dus ik kan doorgaan in slechts het opzetten van deze relaties
maar als je het ziet soort abstraheert de SQL van het hebben
worden geschreven met de hand en het zorgt voor veel
van het zware werk achter de schermen voor u
wanneer u deze creëren associaties gebaseerd op de toetsen
die zijn ingesteld op de juiste in de gegevensbank.
Als je gaat door
en installeren Laravel Er is veel ... er is zo veel
ter dekking van het is eigenlijk een soort van moeilijk om te proberen om te zien
welk deel af te bijten en te gaan meer, maar er zijn veel meer
die we zullen blijven bespreken waarschijnlijk op maandag.
Veel meer functies aan de welsprekende ORM
en de verschillende manieren van het opslaan van gegevens, het associëren van gegevens,
het verwijderen van dingen, het creëren van de verschillende scopes
voor wanneer u bevragen inbrengen [onverstaanbaar] etcetera
dus je kunt een kijkje nemen door dit en ik denk ...
>> Het proces wordt
als toen vooruit wordt eenmaal hebben we onze kerngroep gevormd,
vier persoon groepen zodra we beslissen
op de verschillende groepen projecten zijn de weg verantwoordelijkheden
zal in het algemeen worden divvied is een of twee van u zal sorteren
van terug te gaan naar de tekentafel board en erachter oke
voor welk probleem we proberen
hier te lossen de entiteiten we moeten implementeren,
bijvoorbeeld een instructeur of een kern of een soort
van toetreding tot er van en je zult spec uit de database tabellen
zoals we in de eerste helft van vandaag en daarna als Tim gezinspeeld
naar de volgende stap in hier zal daarbij komen
met de klassen en je een paar bestanden schrijven
die zich welsprekend Zo volgens enkele
uit de doos functionaliteit, maar dan ook toe te voegen misschien wat
van je eigen functionaliteit voor Zo krijgen telefoonnummer
waar je misschien mooi formatteert het telefoonnummer gebaseerd
op een aantal standaard thema enzovoort en vervolgens alle
die informatie zal vermoedelijk om je een worden meegedeeld
of twee of drie andere ... andere mensen
in uw groep alles zeggen rechterkant heb je deze klassen,
je hebt deze functionaliteit nu begint daadwerkelijk schrijven de logica
uitvoering van de controllers, ondertussen iemand anders
in je groep zal zich bezighouden met de uitzicht en zo het mes templates
dat Tim was een verwijzing naar iemand zal verzorgen
van de [onverstaanbaar] ervaring en het gebruik van de interface
en het drop down gebruiker en zo
en hoewel we nog maar net begonnen
krassen op het oppervlak hier het feit
dat Tim schreef niet een enkele lijn van SQL en het feit
dat hij een soort van staat
om automagisch join deze meerdere tabellen is
waar je echt begint te zie dingen vrij krachtig.
Dus ook al bij eerst het gaat
een lerende absoluut curve omdat u soort hebben
om te leren hoe deze bijzonder kader werkt.
Op het einde toevoegen van enkele nieuwe tafel, het toevoegen van enkele nieuwe functie
om natuurlijk een nieuwe catalogus en dergelijke kunnen slechts enkele minuten duren
te doen en actualisering sjablonen, slechts enkele seconden
dus het is echt heel spannend wat je kunt beginnen
om snel te doen.
Dus hartelijk dank aan Tim op dat cliff hanger, doe verzorgen
van de loterij formulier anders niets te doen
totdat je hoort van ons terug in een dag of zo via e-mail,
we zien jullie volgende week.