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.
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.
Apresye sèvis piblik Eloquent ORM, ak konprann ekosistèm nan se yon dwe. Etap pou kòmanse:
migration
lè l sèvi avèk konsole a Artisan
eloquent
seed
nan baz done aArtisan 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.
Eloquent
Apre migrasyon baz done a fini, pwochen pwosesis la se seeding
. Eloquent
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
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.
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.
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.
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.
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();
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.
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
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...
Laravel, pi popilè pou sentaks elegant li yo ak karakteristik pwisan, tou bay yon fondasyon solid pou achitekti modilè. La…
Cisco ak Splunk ap ede kliyan akselere vwayaj yo nan Sant Operasyon Sekirite (SOC) nan tan kap vini an ak...
Ransomware te domine nouvèl la pou de dènye ane yo. Pifò moun konnen byen ke atak...
Yon operasyon oftalmoplasti lè l sèvi avèk Apple Vision Pro komèsyal viewer te fèt nan Poliklinik Catania ...
Devlope ladrès motè amann atravè koloran prepare timoun yo pou ladrès ki pi konplèks tankou ekri. Pou koulè...
Sektè naval la se yon vrè pouvwa ekonomik mondyal, ki te navige nan direksyon pou yon mache 150 milya dola ...
Lendi pase a, Financial Times te anonse yon kontra ak OpenAI. FT bay lisans jounalis mondyal li...