[Laravel] Relations Factory หากต้องการสร้าง data จำลองสำหรับทดสอบแบบที่มีความสัมพันธ์กันคงจะดีไม่น้อย
[Laravel] Relations Factory หากต้องการสร้าง data จำลองสำหรับทดสอบ
จากบทความที่ผ่านมา [Laravel] Data Factory คลิ๊กเดียวชีวิตง่ายขึ้น
จะเห็นว่าถ้าอยากจะสร้างข้อมูลจำลองขึ้นมา แค่สร้าง factory และ seeder ขึ้นมาช่วยให้สะดวกในการพัฒนามากยิ่งขึ้น
แต่เป็นเพียงแค่สร้างข้อมูลจำลองเพียงแค่ตารางเดียว
ฝากกดโฆษณา Google Ads สัก click เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ
คำถามคือ ถ้าอยากสร้างข้อมูลจำลองในหลายๆตารางที่มีความสัมพันธ์ทำอย่างไร
ในบทความนี้ก็เป็นอีกหนึ่งตัวอย่างที่ผู้เขียนได้ลองทำการทดสอบ จากความเข้าใจที่ไปอ่าน document ของ laravel มาในเรื่องของ Model Relations
สำหรับบทความนี้จะนำ ความสัมพันธ์แบบ One To One มาทำการทดลอง
เริ่มจากขั้นตอนที่
1. ให้ทำต่อจากบทความที่แล้ว php artisan make:migration create_income.
สำหรับสร้างไฟล์สำหรับ create table database ขึ้นมา
$table->unsignedBigInteger('id_coupon')->index()->nullable();
สำหรับ ทำ relation กับ table ของ coupon ที่สร้างไว้ในบทความที่แล้ว
$table->foreign('id_coupon')->references('id')->on('coupons')->onDelete('cascade');
สำหรับสร้าง Relation
2. สร้างไฟล์ Factory สำหรับ Income Class
php artisan make:factory IncomeFactory --model=Income แล้วทำการใส่ค่าจำลอง
3. สร้างไฟล์ model
php artisan make:model Income
4. ไปที่ ไฟล์ Model Coupon ที่สร้างเอาไว้ในบทความที่แล้ว แก้ไขไฟล์ตามนี้
hasone เป็นการสร้างความสัมพันธ์แบบ 1:1 ระหว่าง table Coupon และ Income
5. สร้างไฟล์ Seeder สำหรับ Income
php artisan make:seeder IncomeSeeder
6. เมื่อทำเสร็จทั้งหมดแล้วก็บรรเลง สร้าง Data ได้จากคำสั่ง
php artisan db:seed --class=CouponSeeder
ถ้าไม่มีอะไรผิดพลาดก็จะได้ตามภาพ
table coupon
table Income
จะเห็นว่า id_coupon จะเป็น Foriegn Key ของตารางโดยที่ เชื่อมกับ Id ของ ตาราง Coupon