Artikoli

X'inhu Laravel Eloquent, kif tużah, tutorja b'eżempji

Il-qafas PHP Laravel jinkludi Eloquent Object Relational Mapper (ORM), li jipprovdi mod estremament sempliċi biex tikkomunika ma 'database. 

Laravel u Eloquent jgħinu biex iħaffu l-iżvilupp tal-applikazzjoni u l-pjattaforma, u jipprovdu soluzzjoni adegwata għall-biċċa l-kbira tal-problemi. Ir-rekwiżiti huma indirizzati bi żvilupp aktar mgħaġġel, kif ukoll kodiċi organizzat tajjeb, li jista 'jerġa' jintuża, li jista' jinżamm u li jista 'jskala. 

Kif jaħdem Eloquent

L-iżviluppaturi jistgħu jaħdmu fih Eloquent b'databases multipli bl-użu effiċjenti ta 'implimentazzjoni ta' ActiveMethod. Huwa mudell arkitettoniku fejn il-mudell maħluq fl-istruttura Mudell-View-Kontrollur (MVC) jikkorrispondi għal tabella fid-database. Il-vantaġġ huwa li l-mudelli jwettqu operazzjonijiet ta 'database komuni mingħajr ma jikkodifikaw mistoqsijiet SQL twal. Il-mudelli jippermettulek tagħmel mistoqsija tad-dejta fit-tabelli u daħħal rekords ġodda fit-tabelli. Il-proċess ta 'sinkronizzazzjoni ta' databases multipli li jaħdmu fuq sistemi differenti huwa ssimplifikat. M'għandekx bżonn tikteb mistoqsijiet SQL. Kulma għandek tagħmel hu defiLesti t-tabelli tad-database u r-relazzjonijiet bejniethom, u Eloquent jagħmel il-bqija tax-xogħol.

Tħejjija għal Laravel

L-apprezzament tal-utilità tal-ORM Eloquent, u l-fehim tal-ekosistema huwa meħtieġ. Passi biex tibda:

  1. Installa Laravel minn getcomposer.org, biex tagħmel dan segwi l-istruzzjonijiet hawn
  2. Oħloq migration bl-użu tal-console Artisan
  3. Oħloq mudelli eloquent
  4. tesegwixxi i seed tad-database

Artisan Console huwa l-isem tal-interface tal-linja tal-kmand inkluż f'Laravel. Jipprovdi sett ta 'kmandi utli għall-użu waqt l-iżvilupp tal-applikazzjoni. Huwa mmexxi mill-komponent qawwi Symfony Console.

Biex tara lista tal-kmandi Artiġjani kollha disponibbli, tista' tuża l-kmand tal-lista:

php artisan list

Il-kmandi kollha jiġu b'deskrizzjoni konċiża tal-argumenti u l-għażliet tagħha. Dan jidher fi skrin ta’ “għajnuna”. Biex tara skrin ta' għajnuna, sempliċement qabel l-isem tal-kmand b'"għajnuna" kif muri:

php artisan help migrate

Migration

Il-migrazzjoni hija proċess ta 'ġestjoni tad-database billi tikteb PHP minflok SQL. Jipprovdi mod biex iżżid il-kontroll tal-verżjoni mad-database. 

Biex toħloq migrazzjoni, mexxi l-kmand li ġej:

php artisan make:migration create_student_records

Dan joħloq il-fajl tal-migrazzjoni. Fl-editur tat-test tiegħek, iftaħ il-fajl li għadek kif ħoloq fil-folder 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');
    }
}

Il-kodiċi huwa klassi bl-istess isem'create student records', u għandha żewġ metodi: 'l fuq u' l isfel. Il-metodu up għandu jagħmel bidliet fid-database; għalhekk kull darba li temigra d-database tiegħek, kwalunkwe kodiċi fil-metodu up jiġi esegwit. Min-naħa l-oħra, il-metodu down għandu jreġġa' lura dawk il-bidliet fid-database; hekk kull darba li tmexxi l rollback ta ' migration, il-metodu 'l isfel għandu jneħħi dak li għamel il-metodu 'l fuq. Ġewwa l-metodu up hemm il-bennej schema użat biex jinħolqu u jimmanipulaw it-tabelli. X'jiġri jekk tikkanċella xi wħud mill-migrazzjoni tiegħek? Kull ma trid tagħmel hu li timplimenta l-kmand li ġej:

php artisan migrate:rollback

U se jirtira l-aħħar wieħed migration li ġie implimentat. Barra minn hekk, tista’ tirrestawra kompletament id-database billi tħaddem:

php artisan migrate:reset

Dan se jikkanċella l-migrazzjoni kollha tiegħek.

Defiformazzjoni ta' mudelli Eloquent

Ladarba l-migrazzjoni tad-database tkun kompluta, il-proċess li jmiss huwa l- seedingEloquent jidħol fis-seħħ peress li l seeding hija l-inserzjoni ta' rekords fid-database tagħna. Allura ser ikollok bżonn toħloq il-mudelli qabel timla d-database. Kull tabella tad-database għandha mudell korrispondenti li jintuża biex jinteraġixxi ma' dik it-tabella. Il-mudelli jippermettulek tagħmel mistoqsija dwar id-dejta fit-tabelli tiegħek, kif ukoll iddaħħal rekords ġodda fit-tabella. L-eħfef mod biex tistjanzja l-mudell huwa li tuża l-kmand li ġej:

php artisan make:model Student
Mudell eżempju jidher hawn taħt Student, li tista' tintuża biex tirkupra u tinħażen informazzjoni mit-tabella tad-database tal-istudenti tagħna:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Meta tiġġenera mudell u fl-istess ħin trid tiġġenera migrazzjoni tad-database, tista 'tuża l-għażla –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

Seders

Is-seeders ġenerali huma sett speċjali ta' klassijiet li jippermettulna timla d-database tagħna għal darb'oħra bl-istess data eżatta. Aħna nimplimentaw il-kmand li ġej:

php artisan make:seeder StudentsRecordSeeder

Fl-editur tat-test, taħt il-folder taż-żrieragħ, iftaħ il-fajl maħluq ġdid bl-isem tal-fajl: StudentsRecordSeeder.php. Kif tistgħu taraw, din hija biss klassi sempliċi ħafna b'metodu wieħed imsejjaħ run()

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Il-kodiċi huwa biss tgeżwir madwar klassi ta 'kmand tal-console, maħluqa speċifikament biex tgħin fil-kompitu ta' seeding. Editja l-kodiċi u mbagħad issalvah.

Newsletter dwar l-innovazzjoni
Titlifx l-aktar aħbarijiet importanti dwar l-innovazzjoni. Irreġistra biex tirċevihom bl-email.
public function run()
{
    echo 'Seeding!';
}

U tmur fit-terminal:

php artisan db:seed --class=StudentsRecordSeeder

Issa tista' timla t-tabella b'xi entrati u tmexxi:

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

Hawnhekk tista 'tkompli tħassar, iżżid, timmodifika l-entrati fid-DB, imbagħad tirrestawrahom bi kmand sempliċi.

CRUD ma' Laravel Eloquent

L-operazzjonijiet CRUD b'Laravel Eloquent object-relational mapper (ORM) jagħmluha aktar faċli għall-iżviluppaturi ta' Laravel biex jaħdmu ma' databases multipli. Iwettaq operazzjonijiet ta' ħolqien, taqra, taġġorna u ħassar (CRUD), kif ukoll jimmappa mudelli ta' oġġetti għal tabelli ta' database. Jiġġestixxi l-interazzjonijiet tad-database kollha meħtieġa għall-operazzjonijiet CRUD.

Ħolqien tar-rekords

Tista' tuża l-metodu ::create biex daħħal rekord ġdid fid-database.

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

Minbarra l-metodu ta 'ħolqien sempliċi muri hawn fuq, tista' wkoll toħloq oġġett ġdid u tassenjalu attributi differenti. Imbagħad, tista 'ssejjaħ il-funzjoni save() u tħaddem il-kodiċi. Metodi simili firstOrCreate() jew firstOrNew() huma għażliet oħra għall-ħolqien ta' rekords. Dawn jippermettulek issib student b'ċerti attributi; jekk dak l-istudent ma jinstabx, int se toħloqha fid-database jew tagħti istanzija ta' istanza ġdida.

Qari ta' rekords

Bl-użu ta 'Eloquent ORM, tista' ssib rekords fid-database tiegħek. Il-mistoqsijiet huma mibnija b'mod sempliċi u joffru fluss bla xkiel. Biex toħloq struzzjonijiet ::where, se tuża l-metodi get() U first(). Il-metodu first() se jirritorna rekord wieħed biss, filwaqt li l- get() se jirritorna firxa ta 'rekords li jistgħu jiġu loop fuq. Barra minn hekk, il-metodu find() jista 'jintuża ma' firxa ta 'ċwievet primarji, li se jirritorna ġabra ta' rekords li jaqblu. Hawn huma xi eżempji:

$student = Students::all();

Dan il-kodiċi jġib l-istudenti kollha. Filwaqt li l-kodiċi li ġej isib student speċifiku bl-ID:

$student = Students::find(1);

Barra minn hekk, kif muri hawn taħt, il-kodiċi jiddeskrivi t-tfittxija ta’ student ibbażata fuq attribut speċifiku.

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

Għall-metodu get(), dan il-kodiċi juri kif issib student b'livell ogħla minn 5.

$rankStudents = Student::where('student_rank', '>', 5)->get();
Aġġornament tar-rekord

L-aġġornament tar-rekords bl-użu ta 'Eloquent huwa daqstant sempliċi. Biex taġġorna rekord, sempliċement issib ir-rekord li trid taġġorna, editja l-attributi, u ssejvja. Pereżempju, biex tbiddel il-livell tal-grad tal-istudent ta' John Doe għal 5, l-ewwel sib l-istudent u mbagħad ħaddem il-metodu ta' salvataġġ.

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

Il-metodu ta' salvataġġ jista' jintuża wkoll biex taġġorna mudelli li diġà jeżistu fid-database.

Ħassar ir-rekords

Eloquent tiftaħar il-proċess faċli tiegħu ta 'aġġornament tar-rekords, iżda għandu l-istess storja bit-tħassir. Hemm żewġ għażliet: rekord pull-out u tesegwixxi l-metodu tat-tħassir, jew sempliċement tuża l-metodu jeqirdu. Biex issib u tħassar rekord, sempliċement ħaddem il-kmandi li ġejjin:

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

Biex tħassar rekord u rekords multipli, il-kmandi jiġu esegwiti:

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

Innota li l-parametri jeqirdu huma biss ċwievet primarji b'differenza mill-metodu tat-tħassir li jista 'jaċċetta kwalunkwe kolonna tad-database.

Biex issib u tħassar l-istudenti kollha b'livell ogħla minn 10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Newsletter dwar l-innovazzjoni
Titlifx l-aktar aħbarijiet importanti dwar l-innovazzjoni. Irreġistra biex tirċevihom bl-email.

Artikoli riċenti

Veeam għandu l-aktar appoġġ komprensiv għar-ransomware, mill-protezzjoni għar-rispons u l-irkupru

Coveware minn Veeam se jkompli jipprovdi servizzi ta' rispons għal inċidenti ta' estorsjoni ċibernetika. Coveware se joffri forensiċi u kapaċitajiet ta' rimedju...

April 23 2024

Rivoluzzjoni Ekoloġika u Diġitali: Kif il-Manutenzjoni Predittiva qed tittrasforma l-Industrija taż-Żejt u l-Gass

Il-manutenzjoni ta’ tbassir qed tirrivoluzzjona s-settur taż-żejt u l-gass, b’approċċ innovattiv u proattiv għall-ġestjoni tal-impjant...

April 22 2024

Ir-regolatur tal-antitrust tar-Renju Unit iqajjem allarm ta’ BigTech fuq GenAI

Is-CMA tar-Renju Unit ħarġet twissija dwar l-imġieba ta 'Big Tech fis-suq tal-intelliġenza artifiċjali. Hemm…

April 18 2024

Casa Green: rivoluzzjoni tal-enerġija għal futur sostenibbli fl-Italja

Id-Digriet "Case Green", ifformulat mill-Unjoni Ewropea biex itejjeb l-effiċjenza enerġetika tal-bini, ikkonkluda l-proċess leġiżlattiv tiegħu bi...

April 18 2024