Laravel การสร้าง Table (Migrations,Seeding) การใช้งาน Eloquent Model

27 เม.ย. 2020 , 11,741 Views   , หมวดหมู่ Laravel โค๊ดดิ้ง   , ป้ายกำกับ:, , ,


การสร้าง Table และ Column (Migrations)

สร้างโดยใช้คำสั่ง make:migration Artisan command:

ระบบจะสร้างไฟล์ xxxx_xx_xx_xxxxxx_create_departments_table.php เก็บใว้ในโฟลเดอร์ database/migrations

สร้างฟิวด์เพิ่มเติม

ข้อมูลในไฟล์ก็จะประมาณด้านล่างครับ ชื่อตารางควรมี s ต่อท้าย

ดูการตั้งชื่อตารางตามลิ้งค์นี้ https://www.itpapaya.com/set-class-and-table-name-eloquent-laravel/

เราสามารถสร้าง field หรือ column ได้ดูเพิ่มเติมตามลิ้งค์นี้ครับ https://laravel.com/docs/master/migrations#creating-columns

ฟิวด์หลักๆที่จำเป็นต้องมี

$table->id(); คือ ID
$table->timestamps(); ระบบจะสร้างฟิวด์ created_at,updated_at
$table->softDeletes(‘deleted_at’, 0); จะมีหรือไม่ก็ได้ ถ้ามีเอาใว้สำหรับเวลาลบข้อมูลให้อัพเดทวันที่ลบ แทนที่จะลบออกจากฐานข้อมูลจริง

ตัวอย่างการทำ Foreign Key  หรือดูเพิ่มเติมจากลิ้งค์นี้ https://laravel.com/docs/master/migrations#foreign-key-constraints

รันคำสั่งเพื่อสร้าง Table

ย้อนกลับคำสั่ง Migration ล่าสุด เช่น เรารันคำสั่งสร้าง Table อะไรล่าสุด มันก็จะลบออกทั้งหมดเลย

ย้อนกลับคำสั่ง Migration ทั้งหมด

ย้อนกลับคำสั่ง Migration ทั้งหมดและรัน Migration ใหม่

คำสั่งลบตารางและสร้างใหม่และทำการรันเพื่อเขียนข้อมูลใหม่ เหมาะกับการล้างฐานข้อมูลเพื่อใช้งานระบบใหม่

การเขียนข้อมูลเบื้องต้นลงในตาราง (Seeding)

รันคำสั่งด้านล่าง ดูเพิ่มเติม https://laravel.com/docs/master/seeding#writing-seeders

ระบบจะสร้างไฟล์ database/seeds/UserSeeder.php จากนั้นเข้าไปเขียนคำสั่งดังนี้

จากนั้นเข้าไปที่ไฟล์ database/seeds/DatabaseSeeder.php

รันคำสั่ง

จากนั้นรันคำสั่งเพื่อรัน DatabaseSeeder

หรือคำสั่งด้านล่างเพื่อรันเฉพาะ class UserSeeder

ล้างฐานข้อมูลเพื่อใช้งานระบบใหม่

ใช้คำสั่งด้านล่างนี้ คำสั่งลบตารางและสร้างใหม่และทำการรันเพื่อเขียนข้อมูลใหม่ เหมาะกับการล้างฐานข้อมูลเพื่อใช้งานระบบใหม่

สร้าง Model

ดูเพิ่มเติมตามลิ้งค์นี้ https://laravel.com/docs/master/eloquent#defining-models

โดยใช้คำสั่ง

หรือจะสร้าง Model พร้อมกับสร้าง database migration โดยต่อด้วย--migration หรือ  -m

หากเราสร้าง Flight Model ระบบจะอ้างอิงไปที่ตาราง flights

หรือหากจะ อ้างอิงชื่อตารางเอง ก็ให้ใช้โค๊ดตามตัวอย่างด้านล่าง

Attribute ที่ควรรู้

protected $table = ‘my_flights’; ระบุตารางเอง
protected $primaryKey = ‘flight_id’; ระบุ Primary Key เอง
protected $fillable = [‘name’]; กำหนดให้สามารถกำหนดค่าได้ เช่น กำหนดค่าเพื่อส่งไปอัพเดท,หรือสร้างข้อมูลได้ เป็นต้น
protected $guarded = [‘price’]; ตรงข้ามกับ $fillable *ควรเลือกใช้อย่างใดอย่างนึงระหว่าง $guarded  หรือ $fillable
protected $attributes = [
‘delayed’ => false,
];
กำหนดค่าเริ่มต้นของ Attributes

Relationship

การกำหนดความสัมพันของตารางเพื่อใช้ในการ Query ข้อมูลแบบ Eloquent ORM

One To One

 

One To Many

 

One To Many(Inverse)

 

Many To Many

อ่านเพิ่มเติม

https://stackoverflow.com/questions/53315965/laravel-user-and-role-relationship-user-has-only-1-role

https://stackoverflow.com/questions/33248738/laravel-5-1-eloquent-relationship-for-a-table-with-two-user-id-columns


ป้ายกำกับ:, , ,