amanqaku

Yintoni iLaravel Eloquent, indlela yokuyisebenzisa, isifundo esinemizekelo

Isakhelo se-PHP Laravel sibandakanya i-Eloquent Object Relational Mapper (ORM), ebonelela ngendlela elula kakhulu yokunxibelelana nesiseko sedatha. 

I-Laravel kunye ne-Eloquent inceda ukukhawulezisa isicelo kunye nophuhliso lweqonga, ukubonelela ngesisombululo esaneleyo kwiingxaki ezininzi. Iimfuno zilungiswa ngophuhliso olukhawulezayo, kunye nokucwangciswa kakuhle, ukusetyenziswa kwakhona, ukugcinwa, kunye nekhowudi enokunyuka. 

Indlela Esebenza ngayo Ubuchule

Abaphuhlisi banokusebenza ngaphakathi Eloquent ngoovimba beenkcukacha ezininzi ngokufanelekileyo kusetyenziswa umiliselo lwe-ActiveMethod. Yindlela yokwakha apho imodeli eyenziwe kwi-Model-View-Controller (MVC) isakhiwo sihambelana netafile kwisiseko sedatha. Inzuzo kukuba iimodeli zenza imisebenzi yesiseko sedatha eqhelekileyo ngaphandle kwekhowudi yemibuzo emide yeSQL. Iitemplates zikuvumela ukuba ubuze idatha kwiitheyibhile kwaye ufake iirekhodi ezintsha kwiitafile. Inkqubo yongqamaniso lweenkcukacha ezininzi ezisebenza kwiisistim ezahlukeneyo zenziwa lula. Awudingi ukubhala imibuzo yeSQL. Konke omawukwenze kukwenza defiGqibezela iitheyibhile zedathabheyisi kunye nobudlelwane phakathi kwazo, kwaye i-Eloquent iya kwenza wonke umsebenzi.

Ukulungiselela iLaravel

Ukuxabisa ukuba luncedo kwe-ORM eLizo, kunye nokuqonda i-ecosystem yinto efunekayo. Amanyathelo okuqalisa:

  1. Faka iLaravel kwi-getcomposer.org, ukwenza oku landela imiyalelo apha
  2. Yenza migration usebenzisa i-console Artisan
  3. Yenza itemplates eloquent
  4. phumeza i seed yesiseko sedatha

Artisan Console ligama lojongano lwelayini yomyalelo ebandakanyiweyo kwiLaravel. Ibonelela ngeseti yemiyalelo eluncedo enokusetyenziswa ngexesha lophuhliso lwesicelo. Iqhutywa licandelo elinamandla Symfony Console.

Ukujonga uluhlu lwayo yonke imiyalelo ye-Artisan ekhoyo, ungasebenzisa uluhlu lomyalelo:

php artisan list

Yonke imiyalelo iza nenkcazo emfutshane yeengxoxo zayo kunye neenketho. Oku kuboniswa kwisikrini "soncedo". Ukujonga isikrini soncedo, vele wandulele igama lomyalelo ngo "ncedo" njengoko kubonisiwe:

php artisan help migrate

Migration

Ukufuduka yinkqubo yokulawula isiseko sedatha ngokubhala i-PHP endaweni yoko SQL. Ibonelela ngendlela yokongeza ulawulo lwenguqulelo kwisiseko sedatha. 

Ukwenza imfuduko, vele usebenzise lo myalelo ulandelayo:

php artisan make:migration create_student_records

Oku kudala ifayile yokufuduka. Kumhleli wakho wokubhaliweyo, vula ifayile osanda kuyenza kwifolda 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');
    }
}

Ikhowudi yiklasi enegama elifanayo'create student records', kwaye ineendlela ezimbini: phezulu naphantsi. Indlela ephezulu kufuneka yenze utshintsho kwisiseko sedatha; ke ngalo lonke ixesha ususa idatabase yakho, nayiphi na ikhowudi kwindlela ephezulu iya kuphunyezwa. Ngakolunye uhlangothi, indlela ephantsi kufuneka ibuyisele umva olo tshintsho kwisiseko sedatha; ngoko ngalo lonke ixesha uqhuba i rollback della migration, indlela esezantsi kufuneka ihlehlise into eyenziwe yindlela ephezulu. Ngaphakathi indlela up kukho umakhi we-schema osetyenziselwa ukuyila kunye nokukhohlisa iitafile. Kwenzeka ntoni ukuba unokurhoxisa okunye ukufuduka kwakho? Okufuneka ukwenze kukuphumeza lo myalelo ulandelayo:

php artisan migrate:rollback

Kwaye uya kurhoxisa owokugqibela migration oko kuphunyeziwe. Ukongeza, unokubuyisela ngokupheleleyo isiseko sedatha ngokuqhuba:

php artisan migrate:reset

Oku kuya kurhoxisa lonke ufuduko lwakho.

Defiimodeli yeemodeli Eloquent

Nje ukuba ukufuduka kwedatha kugqityiwe, inkqubo elandelayo yi seedingEloquent iza kudlala ukusukela kwi seeding kukufakwa kweerekhodi kuvimba wethu weenkcukacha. Ke kuya kufuneka udale iitemplates phambi kokuba ugcwalise idatabase. Itheyibhile nganye yesiseko sedatha inemodeli ehambelanayo esetyenziselwa ukusebenzisana naloo theyibhile. Iithempleyithi zikuvumela ukuba ubuze idatha kwiitafile zakho, kunye nokufaka iirekhodi ezintsha kwitafile. Eyona ndlela ilula yokumisela imodeli kukusebenzisa lo myalelo ulandelayo:

php artisan make:model Student
Umzekelo womzekelo uboniswe ngezantsi Student, enokusetyenziselwa ukubuyisela nokugcina ulwazi kwitheyibhile yethu yedatha yabafundi:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Xa uvelisa imodeli kwaye ngexesha elifanayo ufuna ukuvelisa ukufuduka kwedatha, ungasebenzisa ukhetho –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

Imbewu

I-seeders iyonke yiseti ekhethekileyo yeeklasi ezisivumela ukuba sizalise uvimba wethu wedatha ngokuphindaphindiweyo ngedatha efanayo. Senza lo myalelo ulandelayo:

php artisan make:seeder StudentsRecordSeeder

Kumhleli wombhalo, phantsi kwefolda yembewu, vula ifayile entsha eyenziwe ngegama lefayile: StudentsRecordSeeder.php. Njengoko ubona, le yiklasi elula kakhulu enendlela enye ebizwa run().

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Ikhowudi yinto nje ejikeleze iklasi yomyalelo we-console, eyenziwe ngokukodwa ukunceda ngomsebenzi we seeding. Hlela ikhowudi uze uyigcine.

Ileta yeendaba entsha
Ungaphoswa zezona ndaba zibalulekileyo kutshintsho. Bhalisa ukuze uzifumane nge-imeyile.
public function run()
{
    echo 'Seeding!';
}

Kwaye ukuya kwi-terminal:

php artisan db:seed --class=StudentsRecordSeeder

Ngoku ungagcwalisa itafile ngamangeniso kwaye uqhube:

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

Apha ungaqhubeka nokucima, ukongeza, ukuguqula amangeno kwi-DB, emva koko uwabuyisele ngomyalelo olula.

I-CRUD kunye neLaravel Eloquent

Imisebenzi ye-CRUD ene-Laravel Eloquent object-relational mapper (ORM) yenza kube lula kubaphuhlisi beLaravel ukuba basebenze ngoovimba abaninzi. Yenza ukudala, ukufunda, ukuhlaziya, kunye nokucima (CRUD) imisebenzi, kunye neemodeli zezinto zeemephu kwiitafile zedatha. Iphatha lonke unxibelelwano lwedatha efunekayo kwimisebenzi ye-CRUD.

Ukudala irekhodi

Ungasebenzisa ::ukwenza indlela yokufaka irekhodi entsha kuvimba weenkcukacha.

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

Ukongeza kwindlela yokudala elula eboniswe ngasentla, unokwenza kwakhona into entsha kwaye unike iimpawu ezahlukeneyo kuyo. Emva koko, ungafowunela ukugcina () umsebenzi kwaye usebenzise ikhowudi. Iindlela ezifana firstOrCreate() okanye firstOrNew() zezinye iindlela zokwenza iirekhodi. Ezi ziya kukuvumela ukuba ufumane umfundi oneempawu ezithile; ukuba loo mfundi akafumanekanga, uya kuyenza kwisiseko sedatha okanye wenze umzekelo omtsha.

Ukufunda iirekhodi

Ukusebenzisa i-ORM Eloquent, unokufumana iirekhodi kwisiseko sakho sedatha. Imibuzo yakhiwe ngokulula kwaye inika ukuhamba kakuhle. Ukwenza imiyalelo ::where, uya kusebenzisa iindlela get() Kwaye first(). Indlela first() iya kubuyisela irekhodi enye kuphela, ngelixa i get() iya kubuyisela uluhlu lweerekhodi ezinokujikeleziswa. Ngaphezu koko, indlela find() inokusetyenziswa kunye noluhlu lwezitshixo eziphambili, eziya kubuyisela ingqokelela yeerekhodi ezihambelanayo. Nantsi eminye imizekelo:

$student = Students::all();

Le khowudi ifumana bonke abafundi. Ngelixa le khowudi ilandelayo ifumana umfundi othile nge-ID:

$ umfundi = Abafundi :: fumana (1);

Ukongezelela, njengoko kubonisiwe ngezantsi, ikhowudi ichaza uphando lomfundi ngokusekelwe kwimpawu ezithile.

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

Indlela yokufumana () le khowudi ibonisa indlela yokufumana umfundi onenqanaba eliphezulu kuno-5.

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

Ukuhlaziya iirekhodi usebenzisa i-Eloquent kulula nje. Ukuhlaziya irekhodi, fumana ngokulula irekhodi ofuna ukuyihlaziya, hlela iimpawu, kwaye ugcine. Umzekelo, ukutshintsha inqanaba lomfundi kaJohn Doe ukuya kwisi-5, qala ufumane umfundi uze usebenzise indlela yokulondoloza.

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

Indlela yokugcina ingasetyenziselwa ukuhlaziya imifuziselo esele ikhona kuvimba weenkcukacha.

Cima iirekhodi

I-Eloquent iqhayisa ngenkqubo yayo yokuhlaziya irekhodi, kodwa inebali elifanayo ngokucinywa. Kukho iinketho ezimbini: ukurekhoda ukukhupha kwaye wenze indlela yokucima, okanye usebenzise indlela yokutshabalalisa. Ukufumana kunye nokucima irekhodi, sebenzisa le miyalelo ilandelayo:

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

Ukucima irekhodi kunye neerekhodi ezininzi, imiyalelo iyenziwa:

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

Qaphela ukuba iparameters zokutshabalalisa zizitshixo eziphambili kuphela ngokungafaniyo nendlela yokucima enokwamkela nayiphi na ikholamu yedatha.

Ukufumana kunye nokucima bonke abafundi abakwinqanaba elingaphezulu kwe-10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Ileta yeendaba entsha
Ungaphoswa zezona ndaba zibalulekileyo kutshintsho. Bhalisa ukuze uzifumane nge-imeyile.

Amanqaku amva

Izibonelelo zamaphepha okufaka imibala kuBantwana-ihlabathi lomlingo kuyo yonke iminyaka

Ukuphuhlisa izakhono zemoto ngokufaka imibala kulungiselela abantwana izakhono ezinzima ezifana nokubhala. Ukufaka umbala...

2 Meyi 2024

Ikamva lilapha: Njani iShishini lokuThumela liTshintsha uQoqosho lweHlabathi

Icandelo lomkhosi wasemanzini ligunya lokwenyani loqoqosho lwehlabathi, elithe lajonga kwimarike ye-150 yeebhiliyoni...

1 Meyi 2024

Abapapashi kunye ne-OpenAI batyikitya izivumelwano zokulawula ukuhamba kolwazi oluqhutywe yiArtificial Intelligence

NgoMvulo ophelileyo, i-Financial Times ibhengeze isivumelwano kunye ne-OpenAI. I-FT ikhupha iilayisensi kubuntatheli bayo obukumgangatho wehlabathi…

30 Aprili 2024

Iintlawulo ze-Intanethi: Nantsi indlela Iinkonzo zokusasaza ezikwenza ukuba uHlawule ngonaphakade

Izigidi zabantu zihlawula iinkonzo zokusasaza, zihlawula umrhumo wenyanga. Luluvo oluqhelekileyo ukuba…

29 Aprili 2024