laravel database migrations
Deze tutorial legt de verwerking van Laravel-databases, Migraties, Seeding, Raw SQL-query's, Eloquent Models, Welsprekende relaties, Artisan en Tinker uit:
In de vorige tutorial van Laravel Tutorial-serie , we leerden over de architectuur, installatie en componenten van het Laravel Framework. We hebben de Laravel PHP-projectstructuur in detail gezien.
In deze tutorial behandelen we de Laravel-database, Migraties, Seeding, Ruwe SQL-query's uitvoeren, Eloquent-modellen, Eloquent Relationships, Artisan en Tinker. We hebben Laravel versie 7 in alle voorbeelden gebruikt.
Wat je leert:
Laravel Database-interactie
Het Laravel Framework werkt samen met databases met behulp van raw SQL, de vloeiende querybouwer, en de Welbespraakt ORM Het ondersteunt de volgende vier databases.
- MySQL versie 5.6+
- PostgreSQL (Postgres) versie 9.4+
- SQLite versie 3.8.8+
- SQL Server versie 2017+
Stappen om uw project te verbinden met de MySQL-database:
Stap 1: Maak een nieuw database genaamd db_ academie (u kunt elke geschikte naam gebruiken) via phpMyadmin of HeidiSQL
Stap 2: Maak een nieuw project met de naam academie (u kunt elke geschikte naam gebruiken).
Notitie:Raadpleeg onze vorige tutorial, Laravel Tutorial for Beginners 1, als je niet weet hoe je Laravel moet installeren en een nieuw project moet maken.
Stap 3: Open het project in een IDE en open het .env het dossier. Verander de waarde van DB_DATABASE (databasenaam) naar db_ academy (u kunt elke geschikte naam gebruiken). Beide database naam en de waarde van de DB_DATABASE in de .env bestand moet hetzelfde zijn.
Notitie : Mogelijk moet u andere databaseparameters in het .env-bestand wijzigen, zoals DB_USERNAME, DB_PASSWOD, enz. Afhankelijk van uw databaseconfiguratie.
De volgende schermafbeelding toont de databaseconfiguratie in het .env-bestand.
Laravel-migraties
Laravel Migration is een speciale functie die wordt gebruikt om een databasetabel te maken. Standaard is het xxxx_xx_xx_xxxxxx _create_users_table.php bestand en het xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php bestand zijn inbegrepen.
Structuur van een Laravel-migratie
Laravel Migration class gebruikt de volgende twee methoden:
- De up () methode: Deze methode wordt gebruikt om een nieuwe tabel, kolom of index in de database te maken.
- De down () methode: Deze methode wordt gebruikt om een bestaande tabel, kolom of index in de database te verwijderen. Deze methode is de tegenovergestelde methode van de methode up ().
Een Laravel-migratie maken
Voer de volgende opdracht uit in de opdrachtprompt om een migratie met de naam create_tutors_table
De uitvoering van de bovenstaande opdracht zal een bestand maken met de naam xxxx_xx_xx_xxxxxx_create_tutors_table.php in de database / migraties directory.
Open de xxxx_xx_xx_xxxxxx_create_tutors_table.php bestand en wijzig de bestaande code zoals hieronder weergegeven.
Laravel-migraties uitvoeren
Voer de volgende opdracht uit in de opdrachtprompt om alle beschikbare migraties uit te voeren.
Met het bovenstaande commando worden de relevante tabellen in de database gemaakt, zoals hieronder wordt weergegeven.
Migraties terugdraaien
# 1) De laatste batch migraties terugdraaien
Voer de volgende opdracht uit in de opdrachtprompt om het laatste batch migraties (het kan enkele of meervoudige migraties omvatten).
# 2) Het terugdraaien van migraties die de stap vormen
Voer de volgende opdracht uit in de opdrachtprompt om het laatste twee migraties
# 3) Het terugdraaien van alle migraties van de applicatie
Voer de volgende opdracht uit in de opdrachtprompt naar alle migraties terugdraaien van de aanvraag.
# 4) Terugdraaien en migreren met een enkele opdracht
Voer de volgende opdracht uit in de opdrachtprompt naar terugdraaien en migreren met een enkele opdracht.
# 5) Terugdraaien en migreren beperkt nr. van migraties
Voer de volgende opdracht uit in de opdrachtprompt naar terugdraaien en de laatste twee migraties migreren met een enkele opdracht.
# 6) Verwijder alle tabellen en migratie
Voer de volgende opdracht uit in de opdrachtprompt naar laat alle tabellen vallen en migreer
Laravel zaaien
Wanneer u een applicatie ontwikkelt, heeft u gegevens nodig om de applicatie te testen. Seeding wordt gebruikt om testgegevens in de database in te voegen.
Een zaaimachine maken
Stap 1: Voer de volgende opdracht uit in de opdrachtprompt om een seeder te maken met de naam UserSeeder
Met deze opdracht wordt een bestand gemaakt met de naam UserSeeder.php in de database / zaden directory.
Stap 2: Open de UserSeeder.php bestand en wijzig de bestaande code zoals hieronder weergegeven.
Stap 3: Open de DatabaseSeeder.php-bestand in de database / zaden directory en wijzig de bestaande code zoals hieronder weergegeven.
Notitie : De DatabaseSeeder class wordt gebruikt om andere seed-klassen aan te roepen.
Zaaimachines uitvoeren
Stap 1: Voer de volgende opdracht uit in de opdrachtprompt naar regenereer de autoloader van Composer
Stap 2: Voer de volgende opdracht uit in de opdrachtprompt om het DatabaseSeeder klasse.
In plaats van de bovenstaande opdracht uit te voeren, kunt u de volgende opdracht uitvoeren in de opdrachtprompt om het UserSeeder klasse.
Notitie : Voer de volgende opdracht uit in de opdrachtprompt naar verwijder alle tabellen en voer alle migraties opnieuw uit
Stap 3: Controleer de ingevoegde gegevens met de database.
De database geeft de output weer zoals hieronder:
Ruwe SQL-query's uitvoeren
Een invoegquery uitvoeren
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om een nieuw record in te voegen in het docenten tafel.
Stap 2: Bezoek de URL: http: //academy.test/insert
Stap 3: Controleer de ingevoegde gegevens met de database.
De database geeft een output weer die lijkt op de volgende schermafbeelding.
Een selectiequery uitvoeren
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om gegevens op te halen uit het docenten tafel met een ID kaart is gelijk aan twee
Stap 2: Bezoek de URL: http: /academy.test/select
Stap 3: De browser geeft een output weer die lijkt op de volgende schermafbeelding.
Een updatequery uitvoeren
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om het record in het docenten tafel met een ID kaart is gelijk aan 1
Stap 2: Bezoek de volgende URL: http: //academy.test/update
Stap 3: Controleer de bijgewerkte gegevens met de database.
De database geeft een output weer die lijkt op de onderstaande afbeelding:
Een verwijderquery uitvoeren
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om het record in het docenten tafel met een ID kaart is gelijk aan 1
Stap 2: Bezoek de URL: http: //academy.test/delete
Stap 3: Controleer de verwijderde gegevens met de database.
De database geeft een output weer die lijkt op de onderstaande afbeelding:
Laravel welbespraakte modellen
In MVC-architectuur is het personage M. betekent Model Een model verwerkt de gegevens die door de applicatie worden gebruikt. Alle modellen zijn opgeslagen in de app directory. De Gebruiker model ( Gebruiker.php) is het standaardmodel. Elke tabel van de database kan een overeenkomstig Eloquent-model hebben. Bijvoorbeeld Tutor model slaat gegevens op in docenten tafel.
Notitie: De meervoudsnaam van de klasse wordt gebruikt als de tabelnaam, tenzij anders aangegeven.
Een welsprekend model creëren
Voer de volgende opdracht uit in de opdrachtprompt om een model met de naam Tutor
Met deze opdracht wordt een bestand gemaakt met de naam Tutor.php in de app directory.
In plaats van de bovenstaande opdracht kunt u de volgende opdracht uitvoeren in de opdrachtprompt om een database migratie bij het maken van het model.
Of
Beide bovenstaande opdrachten geven dezelfde uitvoer.
Gegevens invoegen
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om een nieuw record in te voegen in het docenten tafel.
hoe u een .xml-bestand opent
Notitie : Zet de eigenschap ' gebruik App Tutor ' in de routes / web.php bestand zoals hieronder getoond.
Stap 2: Bezoek de volgende URL: http: //academy.test/insert-data
Stap 3: Controleer de ingevoegde gegevens met de database.
De database geeft een output weer die lijkt op de onderstaande afbeelding:
Vind gegevens
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om het record in het docenten tafel met een ID kaart is gelijk aan twee
Stap 2: Bezoek de volgende URL: http: //academy.test/find-data
Stap 3: De browser geeft een output weer die lijkt op de onderstaande afbeelding:
Gegevens bijwerken
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om het record in het docenten tafel met een ID kaart is gelijk aan twee
of
Stap 2: Bezoek de volgende URL: http: //academy.test/update-data
Stap 3: Controleer de bijgewerkte gegevens met de database.
De database geeft een output weer die lijkt op de onderstaande afbeelding:
Verwijder data
Stap 1: Voeg het volgende codesegment toe in het routes / web.php bestand om het record in het docenten tafel met een ID kaart is gelijk aan twee
Stap 2: Bezoek de volgende URL: http: //academy.test/delete-data
Stap 3: Controleer de verwijderde gegevens met de database.
De database geeft een output weer die lijkt op de onderstaande afbeelding:
Zachte gegevens verwijderen
In plaats van gegevens uit de database te verwijderen, stelt zacht verwijderen een kenmerk in met de naam verwijderd_at op het model en plaats het in de databasetabel.
Gebruik de volgende eigenschap om zacht verwijderen in te schakelen.
Verlicht Database Eloquent SoftDeletes
Het volgende codesegment kan worden gebruikt om gegevens zacht te verwijderen.
Ontvang Soft Delete-gegevens
De withTrashed () methode kan worden gebruikt krijg zachte verwijderingsgegevens zoals hieronder weergegeven.
Herstel Soft Delete Data
De herstellen() methode kan worden gebruikt herstel zachte verwijderingsgegevens zoals hieronder weergegeven.
Verwijder gegevens permanent
De forceDelete () methode kan worden gebruikt verwijder gegevens permanent zoals hieronder weergegeven.
Laravel welbespraakte relaties
Een welsprekende relatie helpt om databasetabellen gemakkelijk te koppelen.
Welbespraakte typen relaties
De volgende lijst toont de verschillende soorten welsprekende relaties:
- Een-op-een-relatie
- Een-op-veel-relatie
- Veel-op-veel-relatie
- Heeft een-door-relatie
- Heeft een doorgaande relatie
- Een-op-een (polymorfe) relatie
- Een-op-veel (polymorfe) relatie
- Veel-op-veel (polymorfe) relatie
# 1) Een-op-een-relatie
Omschrijving: Het is de één-op-één-relatie tussen de kolommen van verschillende tabellen.
Voorbeeld van een een-op-een-relatie:
Een-op-een-relatie (invers) voorbeeld:
# 2) Een-op-veel-relatie
Omschrijving: In dit type relatie bezit één model een aantal andere modellen.
hoe toegang te krijgen tot apk-bestanden op Android
Voorbeeld van een een-op-veel-relatie:
Voorbeeld van een-op-veel-relatie (invers):
# 3) Veel-op-veel-relatie
Omschrijving: Het is een ingewikkelder relatie dan een-op-een en een-op-veel-relaties, en u moet een draaitabel maken om een dergelijke relatie te definiëren.
Voorbeeld van veel-op-veel-relaties:
Veel-op-veel (inverse) relatie Voorbeeld:
# 4) Heeft-een-door-relatie
Omschrijving: Het verbindt modellen via een enkele tussenliggende relatie.
Voorbeeld van een een-door-relatie:
# 5) Heeft-veel-door-relatie
Omschrijving: Het geeft toegang tot verre of tussenliggende relaties op een gemakkelijke methode.
Voorbeeld van een door-door-relatie:
# 6) Een-op-een (polymorfe) relatie
Omschrijving: Het is vergelijkbaar met een één-op-één-relatie, maar het doelmodel kan tot meer dan één modeltype op één associatie behoren.
Voorbeeld van een een-op-een (polymorfe) relatie:
# 7) Een-op-veel (polymorfe) relatie
Omschrijving: Het is vergelijkbaar met een een-op-veel-relatie, maar het doelmodel kan tot meer dan één modeltype op een enkele associatie behoren.
Voorbeeld van een-op-veel-relatie (polymorfe):
# 8) Veel-op-veel (polymorfe) relatie
Omschrijving: In dit type relatie heeft het doelmodel unieke records die kunnen worden gedeeld met de andere modellen.
Voorbeeld veel-op-veel (polymorfe) relaties:
Laravel Craftsman
In de vorige tutorial hebben we dat geleerd Ambachtelijk is een opdrachtregelinterface CLI
Artisanale opdrachten
Voer de volgende opdracht uit in de opdrachtprompt om alle beschikbare Ambachtelijke bevelen
De volgende schermafbeelding toont de uitvoer van de bovenstaande opdracht.
De volgende tabel toont enkele van de belangrijke artisan-commando's met hun respectievelijke functionaliteiten, die zijn overgenomen uit de uitvoer van het bovenstaande commando (php artisan).
Opdracht | functionaliteit |
---|---|
cache: wissen | Maak de applicatiecache leeg |
helpen | Geeft hulp weer voor een commando |
lijst | Geeft opdrachten weer |
migreren | Voer de databasemigraties uit |
test | Voer de applicatietests uit |
knutselen | Communiceer met uw applicatie |
auth: clear-resets | Verwijder verlopen tokens voor wachtwoordherstel |
db: zaad | Seed de database met records |
evenementenlijst | Maak een lijst van de gebeurtenissen en luisteraars van de toepassing |
key: genereren | Stel de applicatiesleutel in |
merk: kanaal | Maak een nieuwe kanaalklasse |
merk: component | Maak een nieuwe viewcomponentklasse |
merk: controller | Maak een nieuwe controllerklasse |
make: evenement | Maak een nieuwe evenementklasse |
merk: fabriek | Maak een nieuwe modelfabriek |
merk: luisteraar | Maak een nieuwe event listener-klasse |
merk: mail | Maak een nieuwe e-mailklasse |
merk: middleware | Maak een nieuwe middleware-klasse |
make: migratie | Maak een nieuw migratiebestand |
merk: model | Maak een nieuwe Eloquent-modelklasse |
make: notificatie | Maak een nieuwe meldingsklasse |
merk: waarnemer | Maak een nieuwe waarnemersklasse |
beleid maken | Maak een nieuwe beleidsklasse |
merk: provider | Maak een nieuwe serviceproviderklasse |
make: resource | Maak een nieuwe bron aan |
merk: zaaimachine | Maak een nieuwe seeder-klasse |
make: test | Maak een nieuwe testklasse |
migreren: vers | Verwijder alle tabellen en voer alle migraties opnieuw uit |
migreren: vernieuwen | Reset alle migraties en voer ze opnieuw uit |
migreren: reset | Alle databasemigraties terugdraaien |
migreren: rollback | De laatste databasemigratie terugdraaien |
meldingen: tafel | Maak een migratie voor de meldingstabel |
route: lijst | Maak een lijst van alle geregistreerde routes |
opslag: link | Maak de symbolische koppelingen die voor de toepassing zijn geconfigureerd |
Laravel Tinker
Tinker is een REPL (READ-EVAL-PRINT-LOOP) waarmee je via de opdrachtregel kunt communiceren met de applicatie. Tinker communiceert met een database zonder routes te registreren.
Tinker gebruiken met Artisan, en het bevat standaard.
Tinker-omgeving inschakelen
Voer de volgende opdracht uit in de opdrachtprompt om de Tinker-omgeving in te schakelen.
De volgende schermafbeelding toont de uitvoer van de bovenstaande opdracht.
Gegevens invoegen met Tinker
Voer de volgende opdrachten uit in de opdrachtprompt om een nieuw record in te voegen in het gebruikers tafel.
De database geeft een output weer zoals in de volgende schermafbeelding.
Vind gegevens met Tinker
Voer de volgende opdracht uit in de opdrachtprompt om het record te zoeken / op te halen dat een ID kaart gelijk aan twee in de gebruikers tafel.
De opdrachtprompt geeft uitvoer weer die lijkt op de volgende schermafbeelding.
Update gegevens met Tinker
Voer de volgende opdracht uit in de opdrachtprompt om het record bij te werken dat een ID kaart gelijk aan twee in de gebruikers tafel.
De database geeft een output weer zoals in de volgende schermafbeelding.
Verwijder gegevens met Tinker
Voer de volgende opdracht uit in de opdrachtprompt om de record met een ID kaart gelijk aan twee in de gebruikers tafel.
De database geeft een output weer die lijkt op de volgende schermafbeelding.
Gevolgtrekking
Het Laravel Framework werkt samen met de databases met behulp van onbewerkte SQL, de vloeiende querybuilder en de Eloquent ORM. Een model verwerkt de gegevens die door de applicatie worden gebruikt. Een welsprekende relatie helpt om databasetabellen gemakkelijk te koppelen.
Migratie is een speciale functie die wordt gebruikt om een databasetabel te maken. Seeding wordt gebruikt om testgegevens in de database in te voegen, wat erg handig is voor de ontwikkelaar, aangezien de ontwikkelaar gegevens nodig heeft om de applicatie te testen tijdens het ontwikkelen. Tinker communiceert met een database zonder routes te registreren.
We hopen dat je deze tutorial nuttig vond! In de volgende tutorial bespreken we formulieren, uploaden van bestanden, authenticatie, verzenden van e-mails, sessies, enz.
Veel plezier met leren!
<< PREV Tutorial VOLGENDE Tutorial >>
Aanbevolen literatuur
- Laravel Collection en Laravel Forge Tutorial
- Laravel-formulieren en validatieregels met voorbeeld
- Laravel-sessie, uploaden / downloaden van bestanden en machtigingen
- PHP Laravel-zelfstudie voor beginners: wat is Laravel Framework
- MongoDB Maak een databaseback-up
- Database testen met JMeter
- Oracle Database-zelfstudie - Wat is Oracle Database?
- Top 10 tools voor databaseontwerp om complexe gegevensmodellen te bouwen