บทความ

Laravel Eloquent คืออะไร, วิธีใช้งาน, แบบฝึกหัดพร้อมตัวอย่าง

เฟรมเวิร์ก Laravel PHP ประกอบด้วย Eloquent Object Relational Mapper (ORM) ซึ่งเป็นวิธีที่ง่ายมากในการสื่อสารกับฐานข้อมูล 

Laravel และ Eloquent ช่วยให้การพัฒนาแอปพลิเคชันและแพลตฟอร์มเร็วขึ้น โดยมอบวิธีแก้ปัญหาที่เพียงพอสำหรับปัญหาส่วนใหญ่ ความต้องการได้รับการแก้ไขด้วยการพัฒนาที่เร็วขึ้น รวมถึงโค้ดที่มีการจัดระเบียบอย่างดี ใช้ซ้ำได้ บำรุงรักษาได้ และปรับขนาดได้ 

Eloquent ทำงานอย่างไร

นักพัฒนาสามารถทำงานใน Eloquent ด้วยหลายฐานข้อมูลอย่างมีประสิทธิภาพโดยใช้ ActiveMethod เป็นรูปแบบสถาปัตยกรรมที่โมเดลที่สร้างขึ้นในโครงสร้าง Model-View-Controller (MVC) สอดคล้องกับตารางในฐานข้อมูล ข้อดีคือโมเดลดำเนินการกับฐานข้อมูลทั่วไปโดยไม่ต้องเขียนโค้ดคำสั่ง SQL ขนาดยาว เทมเพลตช่วยให้คุณสามารถสืบค้นข้อมูลในตารางและแทรกบันทึกใหม่ลงในตารางได้ กระบวนการซิงโครไนซ์ฐานข้อมูลหลาย ๆ อันที่ทำงานบนระบบที่แตกต่างกันนั้นง่ายขึ้น คุณไม่จำเป็นต้องเขียนคำสั่ง SQL สิ่งที่คุณต้องทำคือ defiเสร็จสิ้นตารางฐานข้อมูลและความสัมพันธ์ระหว่างตารางเหล่านั้น แล้ว Eloquent จะทำงานส่วนที่เหลือ

การเตรียม Laravel

การชื่นชมประโยชน์ของ Eloquent ORM และการทำความเข้าใจระบบนิเวศเป็นสิ่งที่จำเป็น ขั้นตอนในการเริ่มต้น:

  1. ติดตั้ง Laravel จาก getcomposer.org โดยทำตามคำแนะนำที่นี่
  2. การสร้าง migration โดยใช้คอนโซล Artisan
  3. สร้างเทมเพลต eloquent
  4. วิ่งฉัน seed ของฐานข้อมูล

Artisan Console เป็นชื่อของอินเทอร์เฟซบรรทัดคำสั่งที่รวมอยู่ใน Laravel จัดเตรียมชุดคำสั่งที่เป็นประโยชน์เพื่อใช้ในขณะที่พัฒนาแอปพลิเคชันของคุณ ขับเคลื่อนด้วยส่วนประกอบที่ทรงพลัง Symfony Console.

หากต้องการดูรายการคำสั่ง Artisan ที่มีอยู่ทั้งหมด คุณสามารถใช้คำสั่ง list:

php artisan list

คำสั่งทั้งหมดมาพร้อมกับคำอธิบายสั้น ๆ ของอาร์กิวเมนต์และตัวเลือก ซึ่งจะแสดงในหน้าจอ "วิธีใช้" ในการแสดงหน้าจอวิธีใช้ เพียงนำหน้าชื่อคำสั่งด้วย “help” ดังที่แสดง:

php artisan help migrate

Migration

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' และมีสองวิธี: ขึ้นและลง เมธอด up ควรทำการเปลี่ยนแปลงฐานข้อมูล ดังนั้นเมื่อใดก็ตามที่คุณย้ายฐานข้อมูล โค้ดใดๆ ในเมธอด up จะถูกดำเนินการ ในทางกลับกัน เมธอด down ควรย้อนกลับการเปลี่ยนแปลงฐานข้อมูลเหล่านั้น ดังนั้นเมื่อใดก็ตามที่คุณเรียกใช้ 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

seeders

Seeders โดยรวมเป็นชุดของคลาสพิเศษที่ช่วยให้เราสามารถเติมฐานข้อมูลของเราซ้ำแล้วซ้ำอีกด้วยข้อมูลเดียวกัน เราใช้คำสั่งต่อไปนี้:

php artisan make:seeder StudentsRecordSeeder

ในตัวแก้ไขข้อความ ภายใต้โฟลเดอร์ seed ให้เปิดไฟล์ที่สร้างขึ้นใหม่พร้อมชื่อไฟล์: 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 object-relational mapper (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:

$student = นักเรียน :: ค้นหา (1);

นอกจากนี้ ดังที่แสดงด้านล่าง โค้ดอธิบายการค้นหานักเรียนตามแอตทริบิวต์เฉพาะ

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

สำหรับเมธอด get() รหัสนี้แสดงวิธีค้นหานักเรียนที่มีระดับสูงกว่า 5

$rankStudents = Student::where('student_rank', '>', 5)->get();
บันทึกการปรับปรุง

การอัปเดตบันทึกโดยใช้ Eloquent นั้นง่ายพอๆ กัน หากต้องการอัปเดตเรกคอร์ด เพียงค้นหาเรกคอร์ดที่คุณต้องการอัปเดต แก้ไขแอตทริบิวต์และบันทึก ตัวอย่างเช่น หากต้องการเปลี่ยนระดับเกรดของนักเรียนของ John Doe เป็น 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
จดหมายข่าวนวัตกรรม
อย่าพลาดข่าวสารที่สำคัญที่สุดเกี่ยวกับนวัตกรรม ลงทะเบียนเพื่อรับพวกเขาทางอีเมล

บทความล่าสุด

ผู้จัดพิมพ์และ OpenAI ลงนามข้อตกลงเพื่อควบคุมการไหลของข้อมูลที่ประมวลผลโดยปัญญาประดิษฐ์

เมื่อวันจันทร์ที่แล้ว Financial Times ได้ประกาศข้อตกลงกับ OpenAI FT อนุญาติให้ทำข่าวระดับโลก...

30 2024 เมษายน

การชำระเงินออนไลน์: นี่คือวิธีที่บริการสตรีมมิ่งทำให้คุณชำระเงินตลอดไป

ผู้คนนับล้านชำระค่าบริการสตรีมมิ่ง โดยจ่ายค่าธรรมเนียมการสมัครสมาชิกรายเดือน เป็นความเห็นทั่วไปที่คุณ...

29 2024 เมษายน

Veeam มีการสนับสนุนแรนซัมแวร์ที่ครอบคลุมที่สุด ตั้งแต่การป้องกันไปจนถึงการตอบสนองและการกู้คืน

Coveware by Veeam จะยังคงให้บริการตอบสนองต่อเหตุการณ์การขู่กรรโชกทางไซเบอร์ต่อไป Coveware จะนำเสนอความสามารถในการนิติเวชและการแก้ไข...

23 2024 เมษายน

การปฏิวัติสีเขียวและดิจิทัล: การบำรุงรักษาเชิงคาดการณ์กำลังเปลี่ยนแปลงอุตสาหกรรมน้ำมันและก๊าซอย่างไร

การบำรุงรักษาเชิงคาดการณ์กำลังปฏิวัติภาคส่วนน้ำมันและก๊าซ ด้วยแนวทางเชิงรุกและนวัตกรรมในการจัดการโรงงาน...

22 2024 เมษายน

อ่านนวัตกรรมในภาษาของคุณ

จดหมายข่าวนวัตกรรม
อย่าพลาดข่าวสารที่สำคัญที่สุดเกี่ยวกับนวัตกรรม ลงทะเบียนเพื่อรับพวกเขาทางอีเมล

ติดตามเรา