Ìwé

Kini Laravel Eloquent, bii o ṣe le lo, ikẹkọ pẹlu awọn apẹẹrẹ

Ilana Laravel PHP pẹlu Eloquent Object Relational Mapper (ORM), eyiti o pese ọna ti o rọrun pupọ lati ṣe ibasọrọ pẹlu aaye data kan. 

Laravel ati Olokiki iranlọwọ ohun elo yiyara ati idagbasoke Syeed, n pese ojutu pipe si awọn iṣoro pupọ julọ. Awọn ibeere ni a koju pẹlu idagbasoke yiyara, bakannaa ti ṣeto daradara, atunlo, ṣetọju, ati koodu iwọn. 

Bawo ni Ololufe ṣiṣẹ

Awọn olupilẹṣẹ le ṣiṣẹ ni Eloquent pẹlu ọpọ infomesonu daradara lilo ohun ActiveMethod imuse. O jẹ apẹrẹ ti ayaworan nibiti awoṣe ti a ṣẹda ni Awoṣe-Wo-Controller (MVC) be ni ibamu si tabili kan ninu aaye data. Awọn anfani ni wipe awọn awoṣe ṣe wọpọ database mosi lai ifaminsi gun SQL ibeere. Awọn awoṣe gba ọ laaye lati beere data ni awọn tabili ati fi awọn igbasilẹ titun sinu awọn tabili. Ilana mimuuṣiṣẹpọ awọn apoti isura infomesonu pupọ ti nṣiṣẹ lori awọn eto oriṣiriṣi jẹ irọrun. O ko nilo lati kọ awọn ibeere SQL. Gbogbo ohun ti o ni lati ṣe ni defiPari awọn tabili data data ati awọn ibatan laarin wọn, ati Eloquent yoo ṣe iyokù iṣẹ naa.

Laravel igbaradi

Mọrírì IwUlO ti Eloquent ORM, ati agbọye ilolupo jẹ dandan. Awọn igbesẹ lati bẹrẹ:

  1. Fi Laravel sori ẹrọ lati getcomposer.org, lati ṣe eyi tẹle awọn itọnisọna nibi
  2. Ṣẹda migration lilo console Artisan
  3. Ṣẹda awọn awoṣe eloquent
  4. ṣiṣe i seed ti database

Artisan Console ni awọn orukọ ti awọn pipaṣẹ ila ni wiwo to wa ni Laravel. Pese ṣeto awọn aṣẹ iwulo lati lo lakoko ti o n ṣe agbekalẹ ohun elo rẹ. O ti wa ni ìṣó nipasẹ awọn alagbara paati Symfony Console.

Lati wo atokọ ti gbogbo awọn aṣẹ Artisan ti o wa, o le lo aṣẹ atokọ naa:

php artisan list

Gbogbo awọn aṣẹ wa pẹlu apejuwe ṣoki ti awọn ariyanjiyan ati awọn aṣayan rẹ. Eyi han ni iboju "iranlọwọ". Lati ṣafihan iboju iranlọwọ, nìkan ṣaju orukọ aṣẹ pẹlu “iranlọwọ” bi o ṣe han:

php artisan help migrate

Migration

Iṣilọ jẹ ilana iṣakoso data nipa kikọ PHP dipo SQL. Pese ọna lati ṣafikun iṣakoso ẹya si ibi ipamọ data. 

Lati ṣẹda iṣiwa kan, kan ṣiṣẹ aṣẹ wọnyi:

php artisan make:migration create_student_records

Eyi ṣẹda faili iṣiwa. Ninu olootu ọrọ rẹ, ṣii faili ti o ṣẹṣẹ ṣẹda ninu folda naa 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');
    }
}

Koodu naa jẹ kilasi pẹlu orukọ kanna'create student records', ati pe o ni awọn ọna meji: oke ati isalẹ. Ọna oke yẹ ki o ṣe awọn ayipada si ibi ipamọ data; nitorina nigbakugba ti o ba jade lọ si ibi-ipamọ data rẹ, eyikeyi koodu ti o wa ni ọna oke yoo ṣee ṣe. Ni apa keji, ọna isalẹ yẹ ki o yi awọn iyipada data pada pada; nitorina nigbakugba ti o ba ṣiṣe awọn rollback della migration, ọna isalẹ yẹ ki o ṣe atunṣe ohun ti ọna oke ṣe. Inu ọna up Akole ero wa ti a lo lati ṣẹda ati riboribo awọn tabili. Kini yoo ṣẹlẹ ti o ba fagile diẹ ninu awọn iṣiwa rẹ? Gbogbo ohun ti o ni lati ṣe ni imuse aṣẹ wọnyi:

php artisan migrate:rollback

On o si ko awọn ti o kẹhin migration eyi ti a ti muse. Paapaa, o le mu data data pada ni kikun nipa ṣiṣe:

php artisan migrate:reset

Eyi yoo fagilee gbogbo awọn iṣiwa rẹ.

Definition ti awọn awoṣe Eloquent

Lẹhin ijira data ti pari, ilana atẹle ni seedingEloquent wa sinu play niwon awọn seeding n fi awọn igbasilẹ sii sinu ibi ipamọ data wa. Nitorinaa iwọ yoo nilo lati ṣẹda awọn awoṣe ṣaaju ṣiṣe agbejade data naa. Tabili data kọọkan ni awoṣe ti o baamu eyiti o lo lati ṣe ajọṣepọ pẹlu tabili yẹn. Awọn awoṣe gba ọ laaye lati beere data ninu awọn tabili rẹ, bakannaa fi awọn igbasilẹ titun sinu tabili. Ọna to rọọrun lati ṣe imudara awoṣe ni lati lo aṣẹ atẹle:

php artisan make:model Student
Apeere ti awoṣe ti han ni isalẹ Student, eyi ti o le ṣee lo lati gba ati fi alaye pamọ lati inu tabili data data ọmọ ile-iwe wa:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Nigbati o ba ṣe agbekalẹ awoṣe kan ati ni akoko kanna ti o fẹ lati ṣe ina iṣilọ data, o le lo aṣayan naa –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

Awọn irugbin

Iwoye awọn irugbin jẹ eto pataki ti awọn kilasi ti o gba wa laaye lati gbe data data wa leralera pẹlu data kanna gangan. A ṣe aṣẹ wọnyi:

php artisan make:seeder StudentsRecordSeeder

Ninu olootu ọrọ, labẹ folda awọn irugbin, ṣii faili tuntun ti a ṣẹda pẹlu orukọ faili: StudentsRecordSeeder.php. Bii o ti le rii eyi jẹ kilasi ti o rọrun pupọ pẹlu ọna kan ti a pe run

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Awọn koodu ti wa ni o kan kan wrapper ni ayika kan console pipaṣẹ kilasi, pataki itumọ ti lati ran pẹlu awọn iṣẹ-ṣiṣe ti seeding. Ṣatunkọ koodu naa lẹhinna fipamọ.

Iwe iroyin Innovation
Maṣe padanu awọn iroyin pataki julọ lori isọdọtun. Forukọsilẹ lati gba wọn nipasẹ imeeli.
public function run()
{
    echo 'Seeding!';
}

Ati lilọ si ebute naa:

php artisan db:seed --class=StudentsRecordSeeder

Bayi o le ṣe agbejade tabili pẹlu diẹ ninu awọn titẹ sii ki o ṣiṣẹ:

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

Nibi o le tọju piparẹ, fifi kun, iyipada awọn titẹ sii ninu DB, lẹhinna mu pada wọn pẹlu aṣẹ ti o rọrun.

CRUD pẹlu Laravel Eloquent

Awọn iṣẹ CRUD pẹlu Laravel Eloquent object-relational mapper (ORM) jẹ ki o rọrun fun awọn olupilẹṣẹ Laravel lati ṣiṣẹ pẹlu awọn data data lọpọlọpọ. O ṣe iṣẹda, ka, imudojuiwọn, ati paarẹ (CRUD) awọn iṣẹ ṣiṣe, ati awọn awoṣe ohun elo maapu si awọn tabili data data. Mu gbogbo awọn ibaraẹnisọrọ data ti o nilo fun awọn iṣẹ CRUD.

Ṣiṣẹda awọn igbasilẹ

O le lo ọna :: ṣẹda lati fi igbasilẹ titun sii sinu aaye data.

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

Ni afikun si ọna ẹda ti o rọrun ti o han loke, o tun le ṣẹda ohun titun kan ki o fun ni awọn eroja ọtọtọ. Lẹhinna, o le pe iṣẹ fifipamọ () ati ṣiṣẹ koodu naa. Awọn ọna bii firstOrCreate() tabi firstOrNew() jẹ awọn aṣayan miiran fun ṣiṣẹda awọn igbasilẹ. Iwọnyi yoo gba ọ laaye lati wa ọmọ ile-iwe pẹlu awọn abuda kan; ti a ko ba ri ọmọ ile-iwe yẹn, iwọ yoo ṣẹda rẹ ni ibi ipamọ data tabi ṣe afihan apẹẹrẹ tuntun kan.

Awọn igbasilẹ kika

Lilo ORM Olokiki, o le wa awọn igbasilẹ ninu aaye data rẹ. Awọn ibeere naa jẹ itumọ ti o rọrun ati funni ni ṣiṣan dan. Lati ṣẹda awọn gbolohun ọrọ::where, o yoo lo awọn ọna get() Ati first(). Ọna naa first() yoo nikan pada kan gba, nigba ti ọna get() yoo da ọpọlọpọ awọn igbasilẹ loopable pada. Bakannaa, ọna naa find() le ṣee lo pẹlu akojọpọ awọn bọtini akọkọ, eyiti yoo da akojọpọ awọn igbasilẹ ibaamu pada. Eyi ni diẹ ninu awọn apẹẹrẹ:

$student = Students::all();

Yi koodu gba gbogbo omo ile. Lakoko ti koodu atẹle wa ọmọ ile-iwe kan pato nipasẹ ID:

$ akeko = Students :: wa (1);

Paapaa, bi a ṣe han ni isalẹ, koodu naa ṣapejuwe wiwa fun ọmọ ile-iwe ti o da lori ẹda kan pato.

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

Fun ọna ti gba (), koodu yii fihan bi o ṣe le wa ọmọ ile-iwe pẹlu ipele ti o ga ju 5 lọ.

$rankStudents = Student::where('student_rank', '>', 5)->get();
Ṣe igbasilẹ imudojuiwọn

Ṣiṣe imudojuiwọn awọn igbasilẹ nipa lilo Eloquent jẹ bi o rọrun. Lati ṣe imudojuiwọn igbasilẹ kan, kan wa igbasilẹ ti o fẹ ṣe imudojuiwọn, ṣatunkọ awọn abuda ki o fipamọ. Fun apẹẹrẹ, lati yi ipele ipele ti ọmọ ile-iwe John Doe pada si 5, kọkọ wa ọmọ ile-iwe lẹhinna ṣiṣẹ ọna fifipamọ.

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

Ọna fifipamọ tun le ṣee lo lati ṣe imudojuiwọn awọn awoṣe ti o wa tẹlẹ ninu aaye data.

Pa awọn igbasilẹ

Ologbon ṣogo ti ilana isọdọtun igbasilẹ irọrun rẹ, ṣugbọn o ni itan kanna pẹlu piparẹ. Awọn aṣayan meji wa: awọn igbasilẹ fa-jade ati ṣiṣẹ ọna piparẹ, tabi lo ọna iparun nirọrun. Lati wa ati paarẹ igbasilẹ kan, nìkan ṣiṣẹ awọn aṣẹ wọnyi:

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

Lati paarẹ igbasilẹ ati awọn igbasilẹ lọpọlọpọ, awọn aṣẹ naa nṣiṣẹ:

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

Akiyesi pe awọn paramita ti iparun jẹ awọn bọtini akọkọ nikan ko dabi ọna piparẹ eyiti o le gba eyikeyi iwe data data.

Lati wa ati paarẹ gbogbo awọn ọmọ ile-iwe loke ipele 10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Iwe iroyin Innovation
Maṣe padanu awọn iroyin pataki julọ lori isọdọtun. Forukọsilẹ lati gba wọn nipasẹ imeeli.

Awọn iwe ti o ṣẹṣẹ

Awọn olutẹwe ati OpenAI fowo si awọn adehun lati ṣe ilana ṣiṣan ti alaye ti a ṣe ilana nipasẹ Imọran Artificial

Ni ọjọ Aarọ to kọja, Awọn akoko Iṣowo kede adehun kan pẹlu OpenAI. FT ṣe iwe-aṣẹ iwe-akọọlẹ agbaye rẹ…

30 Kẹrin 2024

Awọn sisanwo ori ayelujara: Eyi ni Bii Awọn iṣẹ ṣiṣanwọle jẹ ki o sanwo lailai

Awọn miliọnu eniyan sanwo fun awọn iṣẹ ṣiṣanwọle, san awọn idiyele ṣiṣe alabapin oṣooṣu. O jẹ ero ti o wọpọ pe o…

29 Kẹrin 2024

Veeam ṣe ẹya atilẹyin okeerẹ julọ fun ransomware, lati aabo si esi ati imularada

Coveware nipasẹ Veeam yoo tẹsiwaju lati pese awọn iṣẹ esi iṣẹlẹ ikọlu cyber. Coveware yoo funni ni awọn oniwadi ati awọn agbara atunṣe…

23 Kẹrin 2024

Alawọ ewe ati Iyika oni-nọmba: Bawo ni Itọju Asọtẹlẹ ti n Yipada Ile-iṣẹ Epo & Gaasi

Itọju isọtẹlẹ jẹ iyipada ti eka epo & gaasi, pẹlu imotuntun ati ọna imudani si iṣakoso ọgbin.…

22 Kẹrin 2024