Atik

Ki sa ki Laravel Eloquent, kouman yo sèvi ak li, leson patikilye ak egzanp

Fondasyon Laravel PHP gen ladan Eloquent Object Relational Mapper (ORM), ki bay yon fason trè fasil pou kominike ak yon baz done. 

Laravel ak Eloquent ede akselere devlopman aplikasyon ak platfòm, bay yon solisyon adekwa pou pifò pwoblèm. Yo adrese egzijans ak devlopman pi rapid, ansanm ak kòd ki byen òganize, ki kapab itilize ankò, ki kapab antreteni yo, epi ki ka évolutive. 

Ki jan Eloquent travay

Devlopè yo ka travay nan Eloquent ak plizyè baz done avèk efikasite lè l sèvi avèk yon aplikasyon ActiveMethod. Li se yon modèl achitekti kote modèl ki te kreye nan estrikti Model-View-Controller (MVC) koresponn ak yon tab nan baz done a. Avantaj la se ke modèl yo fè operasyon baz done komen san yo pa kode demann SQL long. Modèl yo pèmèt ou rechèch done nan tab yo epi mete nouvo dosye nan tab yo. Pwosesis la nan senkronize baz done miltip kouri sou diferan sistèm senplifye. Ou pa bezwen ekri demann SQL. Tout sa ou dwe fè se defiFini tab baz done yo ak relasyon ki genyen ant yo, epi Eloquent pral fè rès travay la.

Laravel preparasyon

Apresye sèvis piblik Eloquent ORM, ak konprann ekosistèm nan se yon dwe. Etap pou kòmanse:

  1. Enstale Laravel soti nan getcomposer.org, pou fè sa swiv enstriksyon yo isit la
  2. Kreye migration lè l sèvi avèk konsole a Artisan
  3. Kreye modèl eloquent
  4. kouri mwen seed nan baz done a

Artisan Console se non koòdone liy kòmand ki enkli nan Laravel. Bay yon seri kòmandman itil pou itilize pandan y ap devlope aplikasyon w lan. Li se kondwi pa eleman nan pwisan Symfony Console.

Pou wè yon lis tout kòmandman Artisan ki disponib, ou ka itilize kòmandman lis la:

php artisan list

Tout kòmandman yo vini ak yon deskripsyon kout sou agiman ak opsyon li yo. Sa a montre nan yon ekran "èd". Pou montre yon ekran èd, tou senpleman anvan non kòmandman an ak "èd" jan yo montre:

php artisan help migrate

Migration

Migrasyon se yon pwosesis jesyon baz done lè w ekri PHP pito SQL. Bay yon fason pou ajoute kontwòl vèsyon nan baz done a. 

Pou kreye yon migrasyon, jis kouri lòd sa a:

php artisan make:migration create_student_records

Sa a kreye dosye migrasyon an. Nan editè tèks ou a, louvri fichye ou jis kreye nan katab la 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');
    }
}

Kòd la se yon klas ki gen menm non 'create student records', epi li gen de metòd: monte ak desann. Metòd la moute ta dwe fè chanjman nan baz done a; Se konsa, chak fwa ou emigre baz done ou a, nenpòt kòd nan metòd la moute yo pral egzekite. Nan lòt men an, metòd la desann ta dwe woule tounen chanjman sa yo baz done; se konsa chak fwa ou kouri a rollback nan migration, metòd la desann ta dwe defèt sa metòd la moute te fè. Anndan metòd la up gen mason chema yo itilize pou kreye ak manipile tab yo. Kisa k ap pase si ou anile kèk nan migrasyon ou yo? Tout sa ou dwe fè se aplike lòd sa a:

php artisan migrate:rollback

Epi li pral kolekte dènye a migration ki te aplike. Epitou, ou ka konplètman restore baz done a lè w ap kouri:

php artisan migrate:reset

Sa a pral anile tout migrasyon ou yo.

Defisyon nan modèl nan Eloquent

Apre migrasyon baz done a fini, pwochen pwosesis la se seedingEloquent antre nan jwèt depi nan seeding ap mete dosye nan baz done nou an. Se konsa, ou pral bezwen kreye modèl yo anvan peple baz done a. Chak tab baz done gen yon modèl korespondan ki itilize pou kominike avèk tab sa a. Modèl yo pèmèt ou rechèch done yo nan tab ou yo, osi byen ke mete nouvo dosye nan tablo a. Fason ki pi fasil pou enstansye modèl la se sèvi ak lòd sa a:

php artisan make:model Student
Yo montre yon egzanp yon modèl anba a Student, ki ka itilize pou rekipere ak estoke enfòmasyon nan tab baz done elèv nou an:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Lè ou jenere yon modèl ak an menm tan an ou vle jenere yon migrasyon baz done, ou ka itilize opsyon an –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

Seeders

An jeneral seeders yo se yon seri klas espesyal ki pèmèt nou peple baz done nou an sou yo ak sou ankò ak egzak menm done yo. Nou aplike lòd sa a:

php artisan make:seeder StudentsRecordSeeder

Nan editè tèks la, anba katab grenn lan, louvri dosye ki fèk kreye a ak non fichye a: StudentsRecordSeeder.php. Kòm ou ka wè, sa a se jis yon klas trè senp ak yon metòd sèl rele run,

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Kòd la se jis yon anbalaj alantou yon klas lòd konsole, espesyalman bati ede ak travay la nan seeding. Edite kòd la epi sove li.

Bilten inovasyon
Pa rate nouvèl ki pi enpòtan sou inovasyon. Enskri pou resevwa yo pa imel.
public function run()
{
    echo 'Seeding!';
}

Epi ale nan tèminal la:

php artisan db:seed --class=StudentsRecordSeeder

Koulye a, ou ka peple tab la ak kèk antre epi kouri:

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

Isit la ou ka kontinye efase, ajoute, modifye antre nan DB a, Lè sa a, restore yo ak yon lòd senp.

CRUD ak Laravel Elokan

Operasyon CRUD ak Laravel Eloquent object-relational mapper (ORM) fè li pi fasil pou devlopè Laravel yo travay ak plizyè baz done. Li fè kreyasyon, li, aktyalizasyon, ak efase (CRUD) operasyon, epi kat modèl objè nan tab baz done. Manyen tout entèraksyon baz done ki nesesè pou operasyon CRUD.

Kreyasyon dosye

Ou ka itilize metòd ::create pou mete yon nouvo dosye nan baz done a.

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

Anplis metòd kreyasyon senp yo montre pi wo a, ou ka tou kreye yon nouvo objè epi ba li diferan atribi. Lè sa a, ou ka rele fonksyon an save() epi kouri kòd la. Metòd tankou firstOrCreate() oswa firstOrNew() se lòt opsyon pou kreye dosye. Sa yo pral pèmèt ou jwenn yon elèv ki gen sèten atribi; si yo pa jwenn elèv sa a, ou pral kreye li nan baz done a oswa enstansye yon nouvo egzanp.

Lekti dosye

Sèvi ak Eloquent ORM, ou ka jwenn dosye nan baz done w la. Rekèt yo bati tou senpleman epi yo ofri yon koule lis. Pou kreye deklarasyon::where, ou pral sèvi ak metòd yo get() Epi first(). Metòd la first() pral sèlman retounen yon dosye, pandan y ap metòd la get() pral retounen yon etalaj loopable nan dosye. Epitou, metòd la find() ka itilize ak yon seri kle prensipal, ki pral retounen yon koleksyon dosye matche. Men kèk egzanp:

$student = Students::all();

Kòd sa a jwenn tout elèv yo. Pandan ke kòd sa a jwenn yon elèv espesifik pa ID:

$elèv = Elèv::find(1);

Epitou, jan yo montre anba a, kòd la dekri rechèch pou yon elèv ki baze sou yon atribi espesifik.

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

Pou metòd get(), kòd sa a montre kijan pou jwenn yon elèv ki gen yon nivo ki pi wo a 5.

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

Mizajou dosye lè l sèvi avèk Eloquent se menm jan fasil. Pou mete ajou yon dosye, jis jwenn dosye ou vle mete ajou, modifye atribi yo epi sove. Pa egzanp, pou chanje nivo klas elèv John Doe a nan 5, premye jwenn elèv la epi answit egzekite metòd sove a.

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

Metòd sove a ka itilize tou pou mete ajou modèl ki deja egziste nan baz done a.

Efase dosye yo

Eloquent gen anpil nan pwosesis fasil aktyalizasyon dosye li yo, men li gen menm istwa a ak efase. Gen de opsyon: rale dosye ak egzekite metòd la efase, oswa tou senpleman itilize metòd la detwi. Pou jwenn ak efase yon dosye, tou senpleman kouri kòmandman sa yo:

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

Pou efase yon dosye ak plizyè dosye, kòmandman yo ap kouri:

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

Remake byen ke paramèt yo nan detwi yo se sèlman kle prensipal kontrèman ak metòd la efase ki ka aksepte nenpòt kolòn baz done.

Pou jwenn ak efase tout elèv ki pi wo a nivo 10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Bilten inovasyon
Pa rate nouvèl ki pi enpòtan sou inovasyon. Enskri pou resevwa yo pa imel.

Recent Articles

Nouvo entèlijans atifisyèl Google la ka modèl ADN, RNA ak "tout molekil lavi"

Google DeepMind ap prezante yon vèsyon amelyore nan modèl entèlijans atifisyèl li yo. Nouvo modèl amelyore bay non sèlman...

9 Me 2024

Eksplore Achitekti modilè Laravel la

Laravel, pi popilè pou sentaks elegant li yo ak karakteristik pwisan, tou bay yon fondasyon solid pou achitekti modilè. La…

9 Me 2024

Cisco Hypershield ak akizisyon de Splunk Nouvo epòk sekirite a kòmanse

Cisco ak Splunk ap ede kliyan akselere vwayaj yo nan Sant Operasyon Sekirite (SOC) nan tan kap vini an ak...

8 Me 2024

Pi lwen pase bò ekonomik la: pri ki pa evidan nan ransomware

Ransomware te domine nouvèl la pou de dènye ane yo. Pifò moun konnen byen ke atak...

6 Me 2024

Entèvansyon inovatè nan Reyalite Ogmante, ak yon espektatè Apple nan Poliklinik Catania

Yon operasyon oftalmoplasti lè l sèvi avèk Apple Vision Pro komèsyal viewer te fèt nan Poliklinik Catania ...

3 Me 2024

Benefis ki genyen nan paj koloran pou timoun - yon mond majik pou tout laj

Devlope ladrès motè amann atravè koloran prepare timoun yo pou ladrès ki pi konplèks tankou ekri. Pou koulè...

2 Me 2024

Lavni an se isit la: Ki jan endistri transpò a ap revolusyone ekonomi global la

Sektè naval la se yon vrè pouvwa ekonomik mondyal, ki te navige nan direksyon pou yon mache 150 milya dola ...

1 Me 2024

Piblikatè ak OpenAI siyen akò pou kontwole koule enfòmasyon ki trete pa entèlijans atifisyèl

Lendi pase a, Financial Times te anonse yon kontra ak OpenAI. FT bay lisans jounalis mondyal li...

30 Avril 2024