[Laravel] Data Factory คลิ๊กเดียวชีวิตง่ายขึ้น

Image placeholder
แวะมาทักทายกันได้

หากคุณคือคนที่ใช้ Laravel Framework แล้วเคยสร้างโปรเจคไว้แล้ว เคยมั้ยที่เวลาสร้าง Database และ Table ต่างๆไว้แล้วจะต้องมา Insert ข้อมูลจำลองทีละแถวซึ่งใช้เวลามากและลงแรงมากเกินไป จะดีกว่ามั้ย ถ้าใช้คำสั่งไม่กี่คำสั่งแล้วใช้ไปได้ตลอด


ฝากกดโฆษณา Google Ads สัก click  เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ

Factory 

     Factory เป็นคลาสหนึ่งที่ช่วยสร้าง Model Object สำหรับการปั้นข้อมูลให้สามารถนำมาใช้งานได้ง่ายขึ้นเพียงเรียก method ที่ชื่อ create 

Seeder    

    Seeder เป็นอีกคลาสหนึ่งที่ใช้งานร่วมกับ Factory ซึ่งเอาไว้สำหรับสร้าง ข้อมูลทดสอบ ลงในฐานข้อมูลตามที่ ซึ่งตามที่เราต้องการ 

สรุปให้เห็นภาพ คือ Factory หน้าที่ของมันเปรียบได้กับเป็นโรงงานที่รับแม่พิมพ์(Model) มาเพื่อสร้างคุ้กกี้( Object) ขึ้นมา แล้วหลังจากนั้นก็ทำการเดินเครื่องปั้ม (Seed) แล้วยัดใส่กล่อง (Table Database) 


วิธีการเรียกคำสั่งต่างๆ

1. php artisan make:migration createCoupon

    ในขั้นตอนนี้ไม่กล่าวถึงในตอนต้น เป็นขั้นที่สำคัญ คือ เอาไว้สร้างกล่องเก็บคุ๊กกี้ขึ้น ก็คือสร้าง Table ใน Database โดยสร้าง field ต่างๆไปด้วย  นี้คือ หน้าตาของ migration file

class CreateCoupon extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('coupons', function (Blueprint $table) {
$table->id();
$table->text("coupon_name");
$table->string("coupon_code");
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('coupons');
}
}



2. php artisan make:model Coupon

    ในขั้นตอนนี้เป็นการสร้าง แม่พิมพ์คุ๊กกี้ ที่ต้องการว่าจะมีหน้าตาแบบไหน หน้าของไฟล์จะเป็นแบบนี้

class Coupon extends Model {}

 

3. php artisan make:factory CouponFactory

    เป็นขั้นตอนหลักที่สำคัญสำหรับบทความนี้ คือ เป็นการนำ Model หรือ แม่พิมพ์มาสร้างรูปแบบโดยการจำลองข้อมูลขึ้นมา หน้าตาไฟล์ที่ได้จะเป็นแบบนี้ ซึ่ง ในส่วนของ Array ที่ Return นั้นจะเป็นการสร้างขึ้นโดยที่อยากให้เป็นอะไรก็แล้วแต่เรา coupon_name จะเป็น paragraph ส่วน coupon_code จะเป็นตัวเลข

use App\Coupon;
use Faker\Generator as Faker;

$factory->define(Coupon::class, function (Faker $faker) {
return [
'coupon_name' => $faker->paragraph(1, true),
'coupon_code' => random_int(10000, 50000)
];
});


4. php artisan make:seeder CouponSeeder

    เป็นขั้นตอนสุดท้ายที่จะจับคุ๊กกี้ของเรา ยัดลงกล่องแล้ว ที่เห็นเลข 50 คือ จำนวนที่เราต้องการจำพิมพ์


class CouponSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// echo factory(App\Coupon::class, 50)->create();
factory(App\Coupon::class, 50)->create();
}
}

    


เมื่อดำเนินการเสร็จไม่มีอะไรผิดพลาดก็จะได้ ตามนี้



    

แวะมาทักทายกันได้
donate

Categories: Tutorial Tags: #laravel , 2608