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

Il-pubblikaturi u l-OpenAI jiffirmaw ftehimiet biex jirregolaw il-fluss tal-informazzjoni pproċessata mill-Intelliġenza Artifiċjali

It-Tnejn li għadda, il-Financial Times ħabbret ftehim mal-OpenAI. FT tagħti liċenzja għall-ġurnaliżmu ta’ klassi dinjija tagħha...

April 30 2024

Ħlasijiet Online: Hawn Kif Is-Servizzi ta' Streaming Jagħmel Inti Tħallas Għal Dejjem

Miljuni ta 'nies iħallsu għal servizzi ta' streaming, iħallsu miżati ta 'abbonament ta' kull xahar. Hija opinjoni komuni li inti...

April 29 2024

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