Izihloko

Iyini i-Laravel Eloquent, ukuthi isetshenziswa kanjani, okokufundisa ngezibonelo

Uhlaka lwe-Laravel PHP luhlanganisa i-Eloquent Object Relational Mapper (ORM), ehlinzeka ngendlela elula kakhulu yokuxhumana nesizindalwazi. 

I-Laravel kanye ne-Eloquent isiza ukusheshisa uhlelo lokusebenza nokuthuthukiswa kweplatifomu, inikeze isisombululo esanele sezinkinga eziningi. Izidingo zisingathwa ngokuthuthuka okusheshayo, kanye nekhodi ehlelwe kahle, esebenziseka kabusha, elondolozekayo, nengakala. 

Isebenza kanjani i-Eloquent

Onjiniyela bangasebenza ku Eloquent ngokwaziswa okuningiliziwe kusetshenziswa ngempumelelo i-ActiveMethod. Kuyiphethini yezakhiwo lapho imodeli edalwe kusakhiwo se-Model-View-Controller (MVC) ihambisana netafula kusizindalwazi. Inzuzo ukuthi izifanekiso zenza imisebenzi yesizindalwazi esivamile ngaphandle kokufaka amakhodi imibuzo ende ye-SQL. Izifanekiso zikuvumela ukuthi ubuze idatha kumathebula futhi ufake amarekhodi amasha kumathebula. Inqubo yokuvumelanisa imininingwane eminingi esebenza kumasistimu ahlukene iyahlelwa. Awudingi ukubhala imibuzo ye-SQL. Okufanele ukwenze nje defiQedela amathebula esizindalwazi kanye nobudlelwano phakathi kwawo, futhi I-Eloquent izokwenza wonke umsebenzi.

Ukulungiswa kweLaravel

Ukwazisa ukusetshenziswa kwe-ORM Ehlakaniphile, nokuqonda i-ecosystem kuyimfuneko. Izinyathelo zokuqalisa:

  1. Faka i-Laravel kusuka ku-getcomposer.org, ukwenza lokhu landela imiyalo lapha
  2. Dala migration usebenzisa i-console Artisan
  3. Dala izifanekiso eloquent
  4. gijima i seed yesizindalwazi

Artisan Console yigama lesixhumi esibonakalayo somugqa womyalo ofakwe kuLaravel. Inikeza isethi yemiyalo ewusizo ongayisebenzisa ngenkathi uthuthukisa uhlelo lwakho lokusebenza. Iqhutshwa ingxenye enamandla Symfony Console.

Ukuze ubone uhlu lwayo yonke imiyalo ye-Artisan etholakalayo, ungasebenzisa umyalo wohlu:

php artisan list

Yonke imiyalo iza nencazelo emfushane yezimpikiswano zayo nezinketho. Lokhu kuboniswa esikrinini "sosizo". Ukuze ubonise isikrini sosizo, vele wandulele igama lomyalo ngokuthi “usizo” njengoba kukhonjisiwe:

php artisan help migrate

Migration

Ukufuduka kuyinqubo yokuphatha isizindalwazi ngokubhala i-PHP esikhundleni salokho SQL. Inikeza indlela yokwengeza isilawuli senguqulo kusizindalwazi. 

Ukuze udale ukufuduka, vele usebenzise umyalo olandelayo:

php artisan make:migration create_student_records

Lokhu kudala ifayela lokuthuthela. Kumhleli wakho wombhalo, vula ifayela osanda kulidala kufolda 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');
    }
}

Ikhodi ikilasi elinegama elifanayo 'create student records', futhi inezindlela ezimbili: phezulu naphansi. Indlela ephezulu kufanele yenze izinguquko kusizindalwazi; ngakho-ke noma nini lapho uthutha isizindalwazi sakho, noma iyiphi ikhodi esendleleni ephezulu izosetshenziswa. Ngakolunye uhlangothi, indlela ephansi kufanele ibuyisele emuva lezo zinguquko zesizindalwazi; ngakho noma nini ugijima i rollback della migration, indlela ephansi kufanele ihlehlise lokho okwenziwe yindlela yaphezulu. Ngaphakathi indlela up kukhona umakhi we-schema osetshenziselwa ukudala nokukhohlisa amatafula. Kwenzekani uma ukhansela okunye ukufuduka kwakho? Okufanele ukwenze ukusebenzisa umyalo olandelayo:

php artisan migrate:rollback

Futhi uzoqoqa okokugcina migration osekwenziwe. Futhi, ungakwazi ukubuyisela ngokugcwele isizindalwazi ngokusebenzisa:

php artisan migrate:reset

Lokhu kuzokhansela konke ukufuduka kwakho.

Defiamamodeli we Eloquent

Ngemuva kokuthi ukufuduka kwesizindalwazi kuqediwe, inqubo elandelayo yilokhu seedingEloquent uyadlala kusukela seeding ifaka amarekhodi kusizindalwazi sethu. Ngakho-ke uzodinga ukudala izifanekiso ngaphambi kokugcwalisa isizindalwazi. Ithebula ngalinye lesizindalwazi linemodeli ehambisanayo esetshenziselwa ukuxhumana nalelo thebula. Izifanekiso zikuvumela ukuthi ubuze ngedatha kumathebula akho, futhi ufake amarekhodi amasha etafuleni. Indlela elula yokufaka imodeli ukusebenzisa umyalo olandelayo:

php artisan make:model Student
Isibonelo sesifanekiso siboniswe ngezansi Student, engasetshenziswa ukubuyisa nokugcina ulwazi kuthebula lesizindalwazi somfundi wethu:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Uma ukhiqiza imodeli futhi ngesikhathi esifanayo ufuna ukukhiqiza ukuthutha kwedathabhesi, ungasebenzisa inketho –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

Izimbewu

Sekukonke ama-seedders ayisethi ekhethekile yamakilasi asivumela ukuthi sigcwalise imininingwane yethu kaningi ngedatha efanayo ncamashi. Senza umyalo olandelayo:

php artisan make:seeder StudentsRecordSeeder

Kumhleli wombhalo, ngaphansi kwefolda yembewu, vula ifayela elisanda kwakhiwa elinegama lefayela: StudentsRecordSeeder.php. Njengoba ubona lokhu kuyikilasi elilula kakhulu elinendlela eyodwa ebizwa ngokuthi run().

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Ikhodi imane nje iyisembozo esizungeze isigaba somyalo we-console, eyakhelwe ngokukhethekile ukusiza ngomsebenzi we seeding. Hlela ikhodi bese uyigcina.

Innovation newsletter
Ungaphuthelwa yizindaba ezibaluleke kakhulu zokuqamba. Bhalisa ukuze uthole nge-imeyili.
public function run()
{
    echo 'Seeding!';
}

Futhi ukuya kutheminali:

php artisan db:seed --class=StudentsRecordSeeder

Manje usungagcwalisa ithebula ngokufakiwe futhi uqalise:

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

Lapha ungaqhubeka nokususa, wengeza, ulungisa okufakiwe ku-DB, bese ukubuyisela ngomyalo olula.

I-CRUD ene-Laravel Eloquent

Ukusebenza kwe-CRUD nge-Laravel Eloquent object-relational mapper (ORM) kwenza kube lula ngabathuthukisi be-Laravel ukuthi basebenze nezizindalwazi eziningi. Lenza imisebenzi yokudala, ukufunda, ukubuyekeza, nokususa (i-CRUD), futhi yenza amamodeli wezinto zamamephu kumathebula esizindalwazi. Iphatha konke ukusebenzisana kwesizindalwazi esidingekayo ekusebenzeni kwe-CRUD.

Ukwakhiwa kwamarekhodi

Ungasebenzisa ::ukudala indlela yokufaka irekhodi elisha kusizindalwazi.

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

Ngokungeziwe endleleni yokudala elula eboniswe ngenhla, ungakwazi futhi ukudala into entsha futhi uyinikeze izici ezihlukile. Ngemuva kwalokho, ungashayela umsebenzi we-save() bese usebenzisa ikhodi. Izindlela ezifana firstOrCreate() noma firstOrNew() ezinye izinketho zokudala amarekhodi. Lokhu kuzokuvumela ukuthi uthole umfundi onezimfanelo ezithile; uma lowo mfundi engatholakali, uzokudala kusizindalwazi noma wenze isenzakalo esisha.

Ukufunda amarekhodi

Ngokusebenzisa i-ORM Ehlakaniphile, ungathola amarekhodi kusizindalwazi sakho. Imibuzo yakhiwe kalula futhi inikeza ukugeleza okushelelayo. Ukudala izitatimende::where, uzosebenzisa izindlela get() Futhi first(). Indlela first() izobuyisela irekhodi elilodwa kuphela, kuyilapho indlela get() izobuyisela amarekhodi amarekhodi. Futhi, indlela find() ingasetshenziswa nohlu lokhiye abayinhloko, elizobuyisela iqoqo lamarekhodi afanayo. Nazi izibonelo:

$student = Students::all();

Le khodi ithola bonke abafundi. Ngenkathi ikhodi elandelayo ithola umfundi othile nge-ID:

$student = Abafundi ::thola(1);

Futhi, njengoba kukhonjisiwe ngezansi, ikhodi ichaza ukusesha umfundi ngokusekelwe kusibaluli esithile.

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

Ngendlela ye-get(), le khodi ibonisa indlela yokuthola umfundi oneleveli engaphezu kuka-5.

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

Ukubuyekeza amarekhodi usebenzisa i-Eloquent kulula ngendlela efanayo. Ukuze ubuyekeze irekhodi, vele uthole irekhodi ofuna ukulibuyekeza, hlela izimfanelo bese ulondoloza. Isibonelo, ukuze uguqule izinga lebanga lomfundi ka-John Doe libe ngu-5, qala ngokuthola umfundi bese wenza indlela yokulondoloza.

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

Indlela yokulondoloza ingase isetshenziselwe ukubuyekeza amamodeli asevele ekhona kusizindalwazi.

Susa amarekhodi

I-Eloquent izishaya isifuba ngenqubo yayo elula yokubuyekeza irekhodi, kodwa inendaba efanayo nokususwa. Kunezindlela ezimbili ongakhetha kuzo: ukukhipha amarekhodi bese usebenzisa indlela yokususa, noma usebenzise indlela yokubhubhisa. Ukuze uthole futhi ususe irekhodi, mane usebenzise imiyalo elandelayo:

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

Ukususa irekhodi namarekhodi amaningi, imiyalo isetshenziswa:

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

Qaphela ukuthi amapharamitha wokubhubhisa angokhiye abayinhloko kuphela ngokungafani nendlela yokususa engamukela noma iyiphi ikholomu yesizindalwazi.

Ukuze uthole futhi ususe zonke izitshudeni ezingaphezu kwezinga le-10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Innovation newsletter
Ungaphuthelwa yizindaba ezibaluleke kakhulu zokuqamba. Bhalisa ukuze uthole nge-imeyili.

Izihloko zakamuva

I-Veeam ifaka ukusekelwa okuphelele kakhulu kwe-ransomware, kusukela ekuvikelweni kuya ekuphenduleni nasekululameni

I-Coveware ye-Veeam izoqhubeka nokuhlinzeka ngezinsizakalo zokuphendula izigameko zokuntshontshwa kwe-inthanethi. I-Coveware izohlinzeka ngama-forensics kanye nekhono lokulungisa…

23 April 2024

Inguquko Eluhlaza Nedijithali: Indlela Ukugcinwa Okubikezelwayo Kuyiguqula Kanjani Imboni Kawoyela Negesi

Ukulungiswa okuqagelayo kuguqula umkhakha kawoyela negesi, ngendlela emisha nesebenzayo yokuphatha izitshalo.…

22 April 2024

Isilawuli se-antitrust sase-UK siphakamisa i-alamu ye-BigTech nge-GenAI

I-CMA yase-UK ikhiphe isexwayiso mayelana nokuziphatha kwe-Big Tech emakethe yezobunhloli bokwenziwa. Lapho…

18 April 2024

I-Casa Green: inguquko yamandla yekusasa elisimeme e-Italy

Isinqumo esithi "Case Green", esakhiwe yi-European Union ukuze kuthuthukiswe ukusebenza kahle kwamandla ezakhiwo, siphothule inqubo yaso yomthetho ngokuthi...

18 April 2024