ความเดิมตอนที่แล้ว

ย้อนดูบทความตอนที่ 4 ได้ที่ https://www.bigdata.rmutt.ac.th/?p=1900

Migration คือ

Migration ถ้าให้แปลตรง ๆ ตาม dictionary แปลได้ว่า “การโยกย้าย” แต่ถ้าอยู่ใน framework จะเกี่ยวข้องกับ database เช่น การ create/alter table หรือ การ insert/update/delete data ใน table หรือ การกระทำใด ๆ ก็ตามที่เกี่ยวข้องกับระบบ database

หรือกล่าวได้อีกนัยหนึ่งว่ากระบวนการทำ migration ใน framework คือการทำให้ database ของเรา up-to-date และสามารถแชร์ให้กับ developer ที่พัฒนาร่วมกับเรา สามารถนำไปใช้ได้ เพื่อให้ database มีลักษณะเดียวกันหรือเทียบเท่ากันในโครงสร้างหลักเสมอ

สามารถดูข้อมูลเพิ่มเติมได้ที่ https://www.yiiframework.com/doc/guide/2.0/en/db-migrations

สร้าง database ใหม่

ก่อนอื่นเราจำเป็นต้องมี database ของเราเองก่อน ให้ทำการสร้าง database ใน MariaDB โดยสามารถเข้าไปสร้างโดยตรงได้ที่ และทำการสร้าง database ใหม่ โดยให้ใช้ชื่อว่า “my_app” (สามารถตั้งชื่ออื่นได้ตามต้องการ) ดังรูป สามารถกด create ได้เลย

ปรับ script การเชื่อมต่อ DB

ให้ทำการแก้ไขข้อมูลที่ไฟล์ common\config\main-local.php โดยปรับ db connect ให้ชี้ไปที่ database ที่ชื่อว่า my_app ดังนี้ หากใครใช้ username และ password เป็นอย่างอื่น สามารถปรับได้ตามที่ต้องการ หรือใครใช้ database เป็น port อื่น ๆ ก็สามารถปรับได้ตามต้องการ

       'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;port=3306;dbname=my_app',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],

Yii2 advanced template migration

ใน Yii2 มีไฟล์ migration มาตรฐานให้จำนวน 2 ไฟล์ ดูได้จาก console\migrations

ในที่นี้ให้ทำการเพิ่มข้อมูล migration เข้าไปในระบบ โดยสามารถดาวน์โหลดไฟล์ได้ที่ https://mailrmuttac-my.sharepoint.com/:u:/g/personal/pongpon_n_rmutt_ac_th/ESRe5vLHaApIn6uICwcO0woBE3bKtKP9fJGvW3EEgS7xzQ?e=ILeprT ซึ่งผมได้ปรับบางอย่างไว้ เพื่อทำการทดลองนี้ ในที่นี้ให้ทำการ unzip และนำไฟล์ดังกล่าวไปวางไว้ที่ console\migrations ถ้าไฟล์เหมือนกันให้ทับไปเลยครับ เพราะผมมีการแก้ไขบางอย่างไปเล็กน้อย เช่น การใส่ profile เพิ่ม ชื่อ นามสกุล เป็นต้น

สั่ง migrate ข้อมูลลงในฐานข้อมูล

ถ้าพร้อมแล้วให้เราทำการสั่ง migrate ข้อมูลที่เราได้เตรียมไว้ใน console\migrations ซึ่งวิธีการคือการใช้คำสั่งผ่านทาง command line หรือ terminal เหมือนที่เราคุ้นเคยกันจากตอนก่อนหน้านี้นั่นเอง โดยคำสั่งที่ใช้คือ

php yii migrate
PS C:\xampp\htdocs\my_app> php yii migrate
Yii Migration Tool (based on Yii v2.0.45)

Creating migration history table "migration"...Done.
Total 5 new migrations to be applied:
        m130524_201442_init
        m190124_110200_add_verification_token_column_to_user_table
        m220101_004717_add_profile_column_to_user
        m220429_012712_alter_create_at_column_in_user
        m220430_012132_insert_default_user

Apply the above migrations? (yes|no) [no]:

ถ้า migration ทำงาน จะได้ตามข้อมูลด้านบน ให้เราตอบ yes ได้เลยครับ

ถ้าไม่มีอะไรผิดพลาดจะมีข้อความตอบกลับเป็นข้อมูลว่า 5 migrations were applied. Migrated up successfully. ซึ่งแสดงให้เห็นว่าการ migrate ทั้ง 5 ไฟล์ที่ตรวจพบ ถูกรันเรียบร้อยแล้ว ถ้าเราสั่ง php yii migrate อีกรอบหนึ่ง ระบบจะฟ้องกลับว่าไม่ตรวจพบไฟล์ migration ใหม่ เพราะในที่นี้เราได้ทำการ migrate ไปครบแล้ว

ลองตรวจสอบข้อมูลในระบบ สังเกตได้ว่ามี table ปรากฏขึ้นมา 2 table