Мақолаҳо

Laravel Eloquent чист, чӣ тавр истифода бурдани он, дастур бо мисолҳо

Чаҳорчӯби Laravel PHP дорои Eloquent Object Relational Mapper (ORM) мебошад, ки роҳи бениҳоят осони муошират бо пойгоҳи додаҳоро таъмин мекунад. 

Laravel ва Eloquent ба суръат бахшидан ба таҳияи барномаҳо ва платформаҳо кӯмак мерасонанд, ки ҳалли муносиби аксари мушкилотро таъмин мекунанд. Талаботҳо бо рушди тезтар, инчунин коди хуб ташкилшуда, дубора истифодашаванда, нигоҳдорӣ ва миқёспазир ҳал карда мешаванд. 

Чӣ тавр Eloquent кор мекунад

Таҳиягарон метавонанд дар Eloquent бо якчанд пойгоҳи додаҳо самаранок бо истифода аз татбиқи ActiveMethod. Ин як намунаи меъморӣ аст, ки модели дар сохтори Model-View-Controller (MVC) сохташуда ба ҷадвали пойгоҳи додаҳо мувофиқат мекунад. Бартарии он дар он аст, ки моделҳо амалиёти умумии пойгоҳи додаҳоро бидуни рамзгузории дархостҳои дарозмуддати SQL иҷро мекунанд. Шаблонҳо ба шумо имкон медиҳанд, ки маълумотро дар ҷадвалҳо пурсед ва ба ҷадвалҳо сабтҳои нав ворид кунед. Раванди ҳамоҳангсозии пойгоҳи додаҳои сершумор, ки дар системаҳои гуногун кор мекунанд, содда карда шудааст. Ба шумо лозим нест, ки дархостҳои SQL нависед. Ҳамаи шумо бояд кор кунед defiҶадвалҳои пойгоҳи додаҳо ва муносибатҳои байни онҳоро ба итмом расонед ва Eloquent боқимондаи корро анҷом медиҳад.

Тайёр кардани Ларавел

Арзёбии фоиданокии Eloquent ORM ва фаҳмидани экосистема ҳатмист. Қадамҳо барои оғоз:

  1. Laravel-ро аз getcomposer.org насб кунед, то ин дастурҳоро иҷро кунед
  2. Эҷод кунед migration бо истифода аз консол Artisan
  3. Шаблонҳо эҷод кунед eloquent
  4. давидан i seed аз базаи маълумот

Artisan Console номи интерфейси сатри фармон аст, ки ба Laravel дохил карда шудааст. Маҷмӯи фармонҳои муфидро барои истифода ҳангоми таҳияи барномаи шумо пешниҳод мекунад. Он аз ҷониби ҷузъи пурқувват идора карда мешавад Symfony Console.

Барои дидани рӯйхати ҳамаи фармонҳои дастраси Artisan, шумо метавонед фармони рӯйхатро истифода баред:

php artisan list

Ҳама фармонҳо бо тавсифи мухтасари далелҳо ва имконоти он меоянд. Ин дар экрани "ёрӣ" нишон дода мешавад. Барои намоиш додани экрани кӯмак, танҳо пеш аз номи фармон бо "кӯмак" тавре ки нишон дода шудааст:

php artisan help migrate

Migration

Муҳоҷират раванди идоракунии пойгоҳи додаҳо тавассути навиштани PHP ба ҷои он аст SQL. Роҳи илова кардани назорати версияро ба пойгоҳи додаҳо таъмин мекунад. 

Барои эҷод кардани муҳоҷират, танҳо фармони зеринро иҷро кунед:

php artisan make:migration create_student_records

Ин файли муҳоҷиратро эҷод мекунад. Дар муҳаррири матнии худ файлеро, ки дар папка сохтаед, кушоед 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');
    }
}

Рамз синфест бо ҳамон ном 'create student records', ва ду усул дорад: боло ва поён. Усули боло бояд ба базаи маълумот тағйирот ворид кунад; Ҳамин тавр, вақте ки шумо пойгоҳи додаи худро интиқол медиҳед, ҳама гуна код дар усули боло иҷро карда мешавад. Аз тарафи дигар, усули поён бояд он тағйироти пойгоҳи додаҳоро баргардонад; Пас, ҳар вақте, ки шумо онро иҷро мекунед rollback Делла migration, усули поён бояд он чизеро, ки усули боло кард, бекор кунад. Дар дохили усул up Созандаи схема мавҷуд аст, ки барои эҷод ва коркарди ҷадвалҳо истифода мешавад. Агар шумо баъзе аз муҳоҷирати худро бекор кунед, чӣ мешавад? Шумо танҳо бояд фармони зеринро иҷро кунед:

php artisan migrate:rollback

Ва ӯ охиринашро ҷамъ мекунад migration ки ба амал бароварда шудааст. Инчунин, шумо метавонед бо истифода аз иҷро кардани пойгоҳи додаҳо пурра барқарор кунед:

php artisan migrate:reset

Ин ҳама муҳоҷирати шуморо бекор мекунад.

Defiпешниҳоди моделҳои Eloquent

Пас аз ба итмом расидани интиқоли пойгоҳи додаҳо, раванди навбатӣ ин аст seedingEloquent аз замони ба амал меояд seeding сабтҳоро ба базаи мо ворид мекунад. Ҳамин тавр, шумо бояд пеш аз пур кардани пойгоҳи додаҳо қолабҳоро эҷод кунед. Ҳар як ҷадвали пойгоҳи додаҳо модели мувофиқ дорад, ки барои ҳамкорӣ бо ин ҷадвал истифода мешавад. Шаблонҳо ба шумо имкон медиҳанд, ки маълумотро дар ҷадвалҳои худ пурсед ва инчунин ба ҷадвал сабтҳои нав ворид кунед. Роҳи осонтарини эҷоди модел ин истифодаи фармони зерин аст:

php artisan make:model Student
Намунаи шаблон дар зер нишон дода шудааст Student, ки метавонад барои дарёфт ва нигоҳ доштани маълумот аз ҷадвали базаи донишҷӯёни мо истифода шавад:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;

class Student extends Model
{
    //
}

Вақте ки шумо модел тавлид мекунед ва ҳамзамон мехоҳед муҳоҷирати пойгоҳи додаҳоро тавлид кунед, шумо метавонед ин интихобро истифода баред –migration o -m:

php artisan make:model Student --migration

php artisan make:model Student -m

тухмипошакхо

Секунҷаҳои умумӣ маҷмӯи махсуси синфҳо мебошанд, ки ба мо имкон медиҳанд, ки пойгоҳи додаҳои моро такроран бо ҳамон як маълумот пур кунем. Мо фармони зеринро иҷро мекунем:

php artisan make:seeder StudentsRecordSeeder

Дар муҳаррири матн, дар зери папкаи тухмҳо, файли навтаъсисро бо номи файл кушоед: StudentsRecordSeeder.php. Тавре ки шумо мебинед, ин як синфи хеле содда бо усули ягона аст run,

<?php
use IlluminateDatabaseSeeder;

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

    public function run()
    {
        //
    }
}

Рамз танҳо як парпеч дар атрофи синфи фармони консол аст, ки махсус барои кӯмак дар иҷрои вазифа сохта шудааст seeding. Рамзро таҳрир кунед ва сипас онро захира кунед.

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.
public function run()
{
    echo 'Seeding!';
}

Ва ба терминал рафтан:

php artisan db:seed --class=StudentsRecordSeeder

Акнун шумо метавонед ҷадвалро бо баъзе сабтҳо пур кунед ва иҷро кунед:

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

Дар ин ҷо шумо метавонед ҳазф кардан, илова кардан, тағир додани сабтҳоро дар МБ идома диҳед ва онҳоро бо фармони оддӣ барқарор кунед.

CRUD бо Laravel Eloquent

Амалиётҳои CRUD бо харитагари объект-реляционии Laravel Eloquent (ORM) барои таҳиягарони Laravel кор бо пойгоҳи додаҳои сершуморро осонтар мекунад. Он амалиёти эҷод, хондан, навсозӣ ва нест кардан (CRUD) -ро иҷро мекунад ва моделҳои объектро ба ҷадвалҳои пойгоҳи додаҳо харита мекунад. Ҳама амалҳои муштараки пойгоҳи додаҳоро, ки барои амалиёти CRUD лозиманд, идора мекунад.

Эҷоди сабтҳо

Шумо метавонед усули ::create барои ворид кардани сабти нав ба базаи маълумотро истифода баред.

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

Илова ба усули оддии эҷоди дар боло нишон додашуда, шумо инчунин метавонед объекти нав эҷод кунед ва ба он атрибутҳои гуногун диҳед. Пас, шумо метавонед ба функсияи save() занг занед ва кодро иҷро кунед. Усулҳои монанди firstOrCreate() о firstOrNew() вариантҳои дигари эҷоди сабтҳо мебошанд. Инҳо ба шумо имкон медиҳанд, ки донишҷӯеро бо сифатҳои муайян пайдо кунед; агар он донишҷӯ ёфт нашавад, шумо онро дар базаи маълумот эҷод мекунед ё як мисоли навро эҷод мекунед.

Хондани сабтҳо

Бо истифода аз Eloquent ORM, шумо метавонед сабтҳоро дар базаи худ пайдо кунед. Дархостҳо оддӣ сохта шудаанд ва ҷараёни ҳамворро пешниҳод мекунанд. Барои эҷод кардани изҳорот::where, шумо усулҳоро истифода хоҳед бурд get() Ва first(). Усули first() танҳо як сабт бармегардад, дар ҳоле ки усули get() маҷмӯи сабтҳои ҳалшавандаро бармегардонад. Инчунин, усул find() метавонад бо як қатор калидҳои ибтидоӣ истифода шавад, ки маҷмӯи сабтҳои мувофиқро бармегардонанд. Инҳоянд чанд мисол:

$student = Students::all();

Ин код ҳамаи донишҷӯёнро мегирад. Дар ҳоле ки рамзи зерин донишҷӯи мушаххасро аз рӯи ID пайдо мекунад:

$донишҷӯ = Донишҷӯён::find(1);

Инчунин, тавре ки дар зер нишон дода шудааст, код ҷустуҷӯи донишҷӯро дар асоси хусусияти мушаххас тавсиф мекунад.

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

Барои усули get() ин код нишон медиҳад, ки чӣ тавр донишҷӯи дорои сатҳи болотар аз 5 пайдо мешавад.

$rankStudents = Student::where('student_rank', '>', 5)->get();
Навсозии сабт

Навсозии сабтҳо бо истифода аз Eloquent ҳамон қадар осон аст. Барои нав кардани сабт, танҳо сабтеро, ки навсозӣ кардан мехоҳед, пайдо кунед, атрибутҳоро таҳрир кунед ва захира кунед. Масалан, барои ба 5 тағир додани сатҳи баҳои донишҷӯи Ҷон Дое, аввал донишҷӯро пайдо кунед ва сипас усули захираро иҷро кунед.

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

Усули нигоҳдорӣ инчунин метавонад барои навсозии моделҳое, ки аллакай дар пойгоҳи додаҳо мавҷуданд, истифода шавад.

Сабтҳоро нест кунед

Eloquent аз раванди осони навсозии сабти худ фахр мекунад, аммо он як ҳикояи ҳазфро дорад. Ду вариант вуҷуд дорад: сабтҳоро берун кунед ва усули несткуниро иҷро кунед ё танҳо усули нобудкуниро истифода баред. Барои дарёфт ва нест кардани сабт, танҳо фармонҳои зеринро иҷро кунед:

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

Барои нест кардани сабт ва сабтҳои сершумор, фармонҳо иҷро мешаванд:

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

Аҳамият диҳед, ки параметрҳои нобудкунӣ бар хилофи усули тозакунӣ, ки метавонанд ҳама гуна сутуни пойгоҳи додаҳоро қабул кунанд, танҳо калидҳои ибтидоӣ мебошанд.

Барои дарёфт ва нест кардани ҳамаи донишҷӯёни болотар аз сатҳи 10.

Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri
Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Мақолаҳои охирин

Дахолати инноватсионӣ дар воқеияти васеъшуда бо тамошобини Apple дар поликлиникаи Катания

Дар поликлиникаи Катания амалиёти офтальмопластика бо истифода аз намоишгари тиҷоратии Apple Vision Pro анҷом дода шуд…

3 Май 2024

Манфиатҳои ранг кардани саҳифаҳо барои кӯдакон - ҷаҳони ҷодугарӣ барои ҳама синну сол

Рушди малакаҳои хуби моторӣ тавассути рангкунӣ кӯдаконро ба малакаҳои мураккабтаре, ба мисли навиштан омода мекунад. Барои ранг кардан…

2 Май 2024

Оянда ин аст: Чӣ гуна саноати боркашонӣ иқтисоди ҷаҳонро инқилоб мекунад

Бахши баҳрӣ як қудрати воқеии иқтисодии ҷаҳонӣ аст, ки ба бозори 150 миллиард доллар ҳаракат кардааст ...

1 Май 2024

Ноширон ва OpenAI барои танзими ҷараёни иттилооте, ки тавассути зеҳни сунъӣ коркард мешаванд, созишнома имзо мекунанд

Рӯзи душанбеи гузашта рӯзномаи Financial Times бо OpenAI созишнома эълон кард. FT журналистикаи сатҳи ҷаҳонии худро иҷозатнома медиҳад…

30 апрел 2024

Инноватсияро ба забони худ хонед

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Моро дунбол кунед