Migration คืออะไร และ อะไรคือ Migration
สำหรับผู้ที่ศึกษา Laravel หรือ Lumen อยู่น่าจะงงเป็นไก่ตาแตกเลย ซึ่งเจ้านี้ตอนช่วงที่ผมจะใช้งานแรกๆ ผมก็ กล้าๆ กลัวๆ เพราะชื่อมันนี้แหละ แต่ที่จริงมันไม่มีไรยากเลย ก่อนอื่นเรามารู้จัก ตัว Migration กันก่อน
Migration คืออะไร เอาความหมายตามที่ผมเข้าใจละกัน ตัว Migration เป็นตัวจัดการ Database ที่มันมีมากับ Laravel หรือ Lumen อยู่แล้วตอนสร้าง Project เลย
เห้ยลูกพี่เราก็มี phpmyadmin ที่ใช้จัดการอยู่ไม่ใช้หรอ ทำไมเราต้องมาใช้ migration ด้วย
ซึ่งอยากให้มองภาพว่าเราจะเอา Migration นั้นมาช้วยทำให้ phpmyadmin ของเรานั้นทำงานได้อย่างมีประสิทธิภาพมากขึ้นนั้นเอง โดยผมจะยกตัวอย่าง ตามที่ผมใช้งานมาละกันเนาะ
ผมได้ใช้งานแบบ ใช้ phpmyadmin จัดการสร้าง table ในฐานข้อมูลและ add ข้อมูลลงฐานข้อมูลโดยผ่าน phpmyadmin ช่องทางเดียวมาโดยตลอดเมื่อก่อนหน้านี้นะ ซึ่งผมก็ใช้งานทำ Project กับเพื่อนี้แหละ แต่ตอน Project กำลังเริ่มยังไม่ค่อยจะมีปัญหาอะไรสักเท่าไหร่หรอก แต่พอเมื่อมีเพื่อนรวม team เพิ่มขึ้นงานเริ่มทำไปนานๆ ขึ้นทำให้เจอปัญหา เมื่อใช้ phpmyadmin เพียงอย่างเดียวก็คือ เราใน team นั้นต้องทำการ import export ส่ง File sql ให้กันอยู่เลยๆ บางทีก็ส่งผิดๆ ถูกบ่างใครแก้ไขอันไหน แก้ไขทับกันอีก (พอดีผมใช้ git ด้วยไง) เลยเจอ ปัญหานี้ไม่รู้เพื่อนเจอกันปล่าว
ก็เลยมาใช้งานตัว migration มันเป็น code ที่มทีอยู่ใน Project เลยก็เลยงานในการจัดการและติดตามการเปลี่ยนแปลงของ code เราง่ายขึ้นมากขึ้น อันนี้เป็นข้อดีทีผมประทับใจเลย แต่ที่จริง migration มันก็มี Function แถมมานะ แต่เดียวค่อยว่ากัน … สรุปเลยว่าดีมาก
พูดเยิ่นเย้อมานานแล้วตกลงมันใช้ยังไง ตัว migration เนี่ย ?
เดียวผมจะขอลงเชิง เทคนิคกันนิดนึง แต่จะเป็นเพียง Guildline พอให้ท่านท่านนำไปใช้งานกันได้นะ ถ้าใครอยากได้ Advance ไปศึกษาเพิ่มเติมกันเองเดอ ( อย่าลืมมา Share ให้กันด้วย )
Step 1 ก่อนใช้ migrate ต้องทำการเชื่อมกับฐานข้อมูลก่อน
เราจะทำการไปสร้าง ฐานข้อมูลกันก่อนเลยชื่อว่า Lumen_migrate และผมจะเลือก utf8_general_ci แล้วก็กดสร้างเลย
จากนั้นเราก็จะมาทำการเชื่อมโดยผ่าน File .env
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=Lumen_migrateDB_USERNAME=rootDB_PASSWORD=
เอาส่วนที่ผมเขียน ไปทับใน file .env เลย
สิ่งสำคัญก็คือ เราต้องกรอก DB_DATABASE ให้ถูกกับที่เราได้กรอกตอนสร้างชื่อฐานข้อมูล
แต่ส่วน DB_USERNAME และ DB_PASSWORD แล้วแต่ตัวจำลอง server ของใครของมันเลย
Step 2 มาเริ่ม migrate กันเลย 🏃🏻🏃🏻🏃🏻
อันนี้ผมจะสอนใช้ผ่าน Lumen นะ ส่วน Laravel ลองไปศึกษาเพิ่มเติมกันดู มันคล้ายกันมากๆ
มาเริ่มจากการสร้าง File เพื่อที่จะนำมา ทำ migrate กันก่อน
php artisan make:migration create_users_table
เอาคำสั่งข้างบนไป run ใน terminal ของเราสะ เมื่อ run เสร็จลองกลับไปดู Folder ดูจะเห็นว่ามีการสร้าง File migrate ขั้นมา
จากนั้นเราเดียวเราจะมาทำการ สร้างฐานข้อมูล user ขึ้นมาโดยผมจะไปเขียน code ใน File Migrate create_user_table ที่เราสร้างไป
ใครอยากรู้ว่าสร้างไง หรือ อยากศึกษาเพิ่มลองไปตาม เว็ปนี้เลย
จากนั้นผมก็จะทำการ run migrate ที่ผมได้สร้างขึ้นมา โดยใช้คำสั่งนี้
php artisan migrate:fresh
ซึ่งตัวนี้จะเป็นคำสั่งที่ใช้สำหรับ run migrate โดยการทำงานมันจะทำการลบฐานข้อมูลทั้งหมดก่อนแล้วสร้างฐานข้อมูลใหม่โดยอ่านจาก File migrate ที่เราได้สร้าง
แต่ที่จริงคำสั่ง migrate มันมีหลากหลายอยู่พอสมควรเดียวจะเอาคำสั่งที่ใช้กันบ่อยๆ มา ฝากละกันเนาะ 😬😬😬😬
php artisan make:migration <ชื่อคลาส> เป็นคําสั่ง สำหรับสร้างไฟล์ Migration ซึ่ง ต้องระบุชื่อคลาสด้วย
php artisan migrate:install เป็นคําสั่งสําหรับสร้างตาราง migrations ในฐานข้อมูล
php artisan migrate เป็นคําสั่งสําหรับ run migration
php artisan migrate:refresh เป็นคําสั่งให้ rollback ทั้งหมด และสั่ง run migrate ใหม่อีกครั้ง
php artisan migrate:rollback เป็นคําสั่งสําหรับใช้ undo การทํางานก่อนหน้านั้น
php artisan migrate:fresh เป็นคําสังสําหรับลบตารางทั้งหมด และสั่ง migrate ใหม่อีกครั้ง (ตัวนี้เป็นตัวที่ผมใช้ประจำ)
กลับย้อนไปตอนที่เรา run migrate เสร็จก็จะได้ table ฐานข้อมูลขึ้นมาเป็นอันที่เรียนร้อยถ้าเราเชื่อมฐานข้อมูลอะไรถูกต้องนะ
แต่ที่จริงตัว migrate นั้นไม่ใช้จะทำการสร้าง table ฐานข้อมูลได้อย่างเดียวนะ มันยังสามารถเพิ่มข้อมูล เพื่อกำหนดไว้เลยใน table นั้นๆ ได้
จากนั้นเราก็จะทำการ run migrate ที่เราเคยได้ใช้ run ไปแล้ว
php artisan migrate:fresh
จากนั้นลองกลับไปดูในฐานข้อมูลของเราดูว่ามีข้อมูลที่เราได้เพิ่มไปไหม
แค่นี้ก็เป็นอันเรียบร้อย ในการจัดการฐานข้อมูลเบื่องต้นโดยการใช้ migrate ซึ่งเป็นเพียงเบื่องต้นสำหรับคนที่สนใจนะครับ และ ทำตามผมแล้วเข้าใจ ผมเชื่อว่าไปศึกษาเพิ่มเติมกันเองได้แน่นอน เป็นกำลังใจให้
ยังไงใครมีอะไรแนะนำ หรือ ผมอธิบายผิดพลาดอะไร สามารถแนะนำได้เลยนะ
🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥