Artikels

Wat is Laravel Eloquent, hoe om dit te gebruik, handleiding met voorbeelde

Die Laravel PHP-raamwerk bevat Eloquent Object Relational Mapper (ORM), wat 'n uiters maklike manier bied om met 'n databasis te kommunikeer. 

Laravel en Eloquent help om toepassings- en platformontwikkeling te bespoedig en bied 'n voldoende oplossing vir die meeste probleme. Vereistes word aangespreek met vinniger ontwikkeling, sowel as goed georganiseerde, herbruikbare, onderhoubare en skaalbare kode. 

Hoe welsprekend werk

Ontwikkelaars kan werk in Eloquent met veelvuldige databasisse doeltreffend deur 'n ActiveMethod-implementering te gebruik. Dit is 'n argitektoniese patroon waar die model wat in die Model-View-Controller (MVC)-struktuur geskep is, ooreenstem met 'n tabel in die databasis. Die voordeel is dat die modelle algemene databasisbewerkings uitvoer sonder om lang SQL-navrae te kodeer. Sjablone laat jou toe om data in tabelle te bevraagteken en nuwe rekords in tabelle in te voeg. Die proses van sinchronisering van verskeie databasisse wat op verskillende stelsels loop, is vereenvoudig. Jy hoef nie SQL-navrae te skryf nie. Al wat jy hoef te doen is defiVoltooi die databasistabelle en die verwantskappe tussen hulle, en Eloquent sal die res van die werk doen.

Laravel voorbereiding

Om die nut van Eloquent ORM te waardeer en die ekosisteem te verstaan ​​is 'n moet. Stappe om te begin:

  1. Installeer Laravel vanaf getcomposer.org, volg die instruksies hier om dit te doen
  2. Skep migration met behulp van die konsole Artisan
  3. Skep sjablone eloquent
  4. hardloop i seed van die databasis

Artisan Console is die naam van die opdragreël-koppelvlak wat in Laravel ingesluit is. Verskaf 'n stel nuttige opdragte om te gebruik tydens die ontwikkeling van jou toepassing. Dit word aangedryf deur die kragtige komponent Symfony Console.

Om 'n lys van alle beskikbare Artisan-opdragte te sien, kan jy die lys-opdrag gebruik:

php artisan list

Alle opdragte kom met 'n bondige beskrywing van sy argumente en opsies. Dit word in 'n "hulp"-skerm gewys. Om 'n hulpskerm te vertoon, gaan eenvoudig die opdragnaam vooraf met "help" soos aangedui:

php artisan help migrate

Migration

Migrasie is 'n databasisbestuursproses deur eerder PHP te skryf SQL. Bied 'n manier om weergawebeheer by die databasis te voeg. 

Om 'n migrasie te skep, voer net die volgende opdrag uit:

php artisan make:migration create_student_records

Dit skep die migrasielêer. In jou teksredigeerder, maak die lêer wat jy sopas geskep het in die gids oop database\migrations:

<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class CreateStudentRecordsTable extends Migration
{
    /**
    * Run the migrations.
    *
    * @return void
    */
    public function up()
    {
        Schema::create('student__records', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }

    /**
    * Reverse the migrations.
    *
    * @return void
    */
    public function down()
    {
        Schema::dropIfExists('student__records');
    }
}

Die kode is 'n klas met dieselfde naam 'create student records', en het twee metodes: op en af. Die op-metode moet veranderinge aan die databasis maak; so wanneer jy jou databasis migreer, sal enige kode in die op-metode uitgevoer word. Aan die ander kant moet die af-metode daardie databasisveranderinge terugrol; so wanneer jy die hardloop rollback van migration, moet die af-metode ongedaan maak wat die op-metode gedoen het. Binne die metode up daar is die skemabouer wat gebruik word om die tabelle te skep en te manipuleer. Wat gebeur as jy sommige van jou migrasies kanselleer? Al wat jy hoef te doen is om die volgende opdrag te implementeer:

php artisan migrate:rollback

En hy sal die laaste een versamel migration wat geïmplementeer is. U kan ook die databasis heeltemal herstel deur te hardloop:

php artisan migrate:reset

Dit sal al jou migrasies kanselleer.

Defisie van modelle van Eloquent

Nadat die databasismigrasie voltooi is, is die volgende proses die seedingEloquent kom in die spel sedert die seeding is besig om rekords in ons databasis in te voeg. U moet dus die sjablone skep voordat u die databasis invul. Elke databasistabel het 'n ooreenstemmende model wat gebruik word om met daardie tabel te kommunikeer. Sjablone laat jou toe om navraag te doen oor die data in jou tabelle, asook om nuwe rekords in die tabel in te voeg. Die maklikste manier om die model te instansieer is om die volgende opdrag te gebruik:

php artisan make:model Student
'n Voorbeeld van 'n sjabloon word hieronder getoon Student, wat gebruik kan word om inligting van ons student se databasistabel af te haal en te stoor:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Wanneer jy 'n model genereer en terselfdertyd 'n databasismigrasie wil genereer, kan jy die opsie gebruik –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

zaai machines

Algehele seeders is 'n spesiale stel klasse wat ons toelaat om ons databasis oor en oor te vul met presies dieselfde data. Ons implementeer die volgende opdrag:

php artisan make:seeder StudentsRecordSeeder

In die teksredigeerder, onder die saad-lêergids, maak die nuutgeskepte lêer met lêernaam oop: StudentsRecordSeeder.php. Soos u kan sien, is dit net 'n baie eenvoudige klas met 'n enkele metode genoem run().

<?php
use IlluminateDatabaseSeeder;

class StudentsRecordSeeder extends Seeder
{
    /**
    * Run the database seeds
    * @return void
    */

    public function run()
    {
        //
    }
}

Die kode is net 'n omhulsel rondom 'n konsole-opdragklas, spesifiek gebou om te help met die taak van seeding. Wysig die kode en stoor dit dan.

Innovasie nuusbrief
Moenie die belangrikste nuus oor innovasie mis nie. Registreer om hulle per e-pos te ontvang.
public function run()
{
    echo 'Seeding!';
}

En gaan na die terminale:

php artisan db:seed --class=StudentsRecordSeeder

Nou kan jy die tabel met 'n paar inskrywings vul en hardloop:

php artisan db:seed --class=class=StudentsRecordSeeder

Hier kan jy aanhou om inskrywings in die DB uit te vee, by te voeg, te wysig en dit dan met 'n eenvoudige opdrag te herstel.

CRUD met Laravel Eloquent

CRUD-bedrywighede met Laravel Eloquent objekverhoudingskaartmaker (ORM) maak dit makliker vir Laravel-ontwikkelaars om met veelvuldige databasisse te werk. Dit voer skep, lees, werk en verwyder (CRUD) bewerkings uit, en karteer objekmodelle na databasistabelle. Hanteer alle databasis-interaksies wat benodig word vir CRUD-bedrywighede.

Skep van rekords

Jy kan die :: skep metode gebruik om 'n nuwe rekord in die databasis in te voeg.

student_record::create(array(
    'first_name' => 'John',
    'last_name'  => 'Doe',
    'student_rank' => 1
));

Benewens die eenvoudige skeppingsmetode wat hierbo gewys word, kan jy ook 'n nuwe voorwerp skep en dit verskillende eienskappe gee. Dan kan jy die save() funksie oproep en die kode laat loop. Metodes soos firstOrCreate() of firstOrNew() is ander opsies om rekords te skep. Dit sal jou toelaat om 'n student met sekere eienskappe te vind; as daardie student nie gevind word nie, sal jy dit in die databasis skep of 'n nuwe instansie instansieer.

Lees rekords

Deur Eloquent ORM te gebruik, kan jy rekords in jou databasis vind. Die navrae is eenvoudig saamgestel en bied 'n gladde vloei. Om stellings te skep::where, sal jy die metodes gebruik get() En first(). Die metode first() sal slegs een rekord terugstuur, terwyl die metode get() sal 'n lusbare reeks rekords terugstuur. Ook die metode find() kan gebruik word met 'n verskeidenheid primêre sleutels, wat 'n versameling ooreenstemmende rekords sal terugstuur. Hier is 'n paar voorbeelde:

$student = Students::all();

Hierdie kode kry alle studente. Terwyl die volgende kode 'n spesifieke student volgens ID vind:

$student = Studente::find(1);

Ook, soos hieronder getoon, beskryf die kode die soeke na 'n student op grond van 'n spesifieke eienskap.

$JohnDoe = Students::where('name', '=', 'John Doe')->first();

Vir die get()-metode wys hierdie kode hoe om 'n student met 'n vlak bo 5 te vind.

$rankStudents = Student::where('student_rank', '>', 5)->get();
Rekordopdatering

Die opdatering van rekords met Eloquent is net so eenvoudig. Om 'n rekord op te dateer, vind net die rekord wat jy wil opdateer, wysig die eienskappe en stoor. Byvoorbeeld, om die graadvlak van John Doe se student na 5 te verander, vind eers die student en voer dan die stoormetode uit.

$JohnDoe = Bear::where('name', '=', 'John Doe')->first();
$JohnDoe->danger_level = 5;
$JohnDoe->save();

Die stoormetode kan ook gebruik word om modelle wat reeds in die databasis bestaan, op te dateer.

Vee rekords uit

Eloquent spog met sy maklike rekordopdateringsproses, maar dit het dieselfde storie met uitvee. Daar is twee opsies: trek rekords uit en voer die verwyderingsmetode uit, of gebruik eenvoudig die vernietigmetode. Om 'n rekord te vind en uit te vee, voer eenvoudig die volgende opdragte uit:

$student = Students::find(1);
$student->delete();

Om 'n rekord en veelvuldige rekords uit te vee, word die opdragte uitgevoer:

Students::destroy(1);
Students::destroy(1, 2, 3);

Let daarop dat die parameters van vernietig slegs primêre sleutels is, anders as die verwyderingsmetode wat enige databasiskolom kan aanvaar.

Om alle studente bo vlak 10 te vind en uit te vee.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Innovasie nuusbrief
Moenie die belangrikste nuus oor innovasie mis nie. Registreer om hulle per e-pos te ontvang.

Onlangse artikels

Innoverende ingryping in Augmented Reality, met 'n Apple-kyker by die Catania Polikliniek

'n Oftalmoplastie-operasie met die Apple Vision Pro-kommersiële kyker is by die Catania Polikliniek uitgevoer ...

3 Mei 2024

Die voordele van inkleurbladsye vir kinders - 'n wêreld van magie vir alle ouderdomme

Die ontwikkeling van fyn motoriese vaardighede deur inkleur berei kinders voor vir meer komplekse vaardighede soos skryf. Om in te kleur...

2 Mei 2024

Die toekoms is hier: hoe die verskepingsbedryf die wêreldekonomie revolusioneer

Die vlootsektor is 'n ware globale ekonomiese moondheid, wat na 'n 150 miljard-mark navigeer het ...

1 Mei 2024

Uitgewers en OpenAI onderteken ooreenkomste om die vloei van inligting wat deur Kunsmatige Intelligensie verwerk word, te reguleer

Verlede Maandag het die Financial Times 'n ooreenkoms met OpenAI aangekondig. FT lisensieer sy wêreldklas-joernalistiek ...

30 April 2024