লারাভেল: ডাটাবেজ মাইগ্রেশনের গুরুত্ব সম্পর্কে একটি সহজ ব্যাখ্যা | Laravel: Database Migrations — Part 9.1

Abu Sayed
3 min readFeb 19, 2024

--

এই পোস্টটি লারাভেলের ডাটাবেজ মাইগ্রেশন (Laravel: Database Migrations) ফিচারটির উপর আলোকপাত করে। এখানে মাইগ্রেশন কী, কেন এটি গুরুত্বপূর্ণ এবং কীভাবে এটি কাজ করে তা উদাহরণসহ বিস্তারিতভাবে আলোচনা করা হয়েছে। এছাড়াও মাইগ্রেশন লিখার নিয়ম এবং কয়েকটি ছোট প্রোগ্রামও দেওয়া হয়েছে।

লারাভেল: ডাটাবেজ মাইগ্রেশনের গুরুত্ব সম্পর্কে একটি সহজ ব্যাখ্যা | Laravel: Database Migrations

কেমনে আছেন সবাই? আজকে আমরা লারাভেলের ডাটাবেজ মাইগ্রেশন নিয়ে গল্প করব।

বন্ধুরা, আপনারা কি জানেন ডাটাবেজ মাইগ্রেশন কী? না জানলে কোন সমস্যা নেই, আজকে আমরা এটা সম্পর্কে সবকিছু জেনে নেব। যদিও শুনতে এটা একটু জটিল মনে হচ্ছে, কিন্তু বাস্তবে খুবই সহজ একটা জিনিস।

ডাটাবেজ মাইগ্রেশন বলতে কী বুঝায়?

ধরুন, আপনি একটা নতুন ওয়েব অ্যাপ্লিকেশন বানাচ্ছেন। এর জন্য আপনাকে ডাটাবেজে কিছু টেবিল তৈরি করতে হবে। সাধারণত এটা করতে হলে আপনাকে SQL কোড লিখতে হত। কিন্তু লারাভেলের ডাটাবেজ মাইগ্রেশন আপনাকে এই কাজটা খুবই সহজে করতে দেয়।

মাইগ্রেশন হচ্ছে একটা ফিচার যেখানে আপনি PHP কোড লিখবেন, আর লারাভেল সেই কোডগুলো নিয়ে SQL কোড তৈরি করে আপনার ডাটাবেজে চালাবে। অর্থাৎ আপনাকে আর সিদ্ধান্ত SQL কোড লিখতে হবে না। কাজটা হবে খুবই সহজে।

একটু উদাহরণ দেখা যাক

ধরুন আমরা একটা users টেবিল তৈরি করতে চাই। সাধারণভাবে আমরা এই SQL লিখতাম:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
)

কিন্তু লারাভেলে আমরা শুধু এই PHP কোডটুকু লিখলেই হবে:

Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
});

দেখতে পাচ্ছেন, কতটা সহজ এবং পড়তে ভাল? আর এই কোডগুলোই লারাভেল ব্যাকগ্রাউন্ডে ভাল করে SQL এ কনভার্ট করবে।

কেন মাইগ্রেশন গুরুত্বপূর্ণ?

বন্ধুরা, মাইগ্রেশন নিয়ে এত কথা কেন বলছি? কারণটা হচ্ছে, এটি আপনার জীবনকে খুবই সহজ করে দিবে। মনে করুন, আপনি একটা লাইভ অ্যাপ্লিকেশনে কাজ করছেন। এখন আপনার ডাটাবেজে কিছু পরিবর্তন করতে হবে। সাধারণভাবে আপনাকে আবার সেই SQL লিখতে হত। কিন্তু মাইগ্রেশনের মাধ্যমে আপনি খুবই সহজে এটা করতে পারবেন।

কিভাবে বুঝলেন না? ধরুন আমরা আগের উদাহরণের users টেবিলে একটা নতুন কলাম যোগ করতে চাই is_admin। সাধারণভাবে আমরা এই SQL লিখতাম:

ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT false;

কিন্তু লারাভেলে আমরা শুধু একটা নতুন মাইগ্রেশন ফাইল তৈরি করে লিখব:

Schema::table('users', function (Blueprint $table) {
$table->boolean('is_admin')->default(false);
});

তারপর আমরা শুধু টারমিনালে php artisan migrate কমান্ডটি চালাব। এইটুকুই! লারাভেল আপনার জন্য বাকী বাকি সব কাজ করে দিবে।

আরও কিছু গুরুত্বপূর্ণ বিষয়

ডাটাবেজের কাঠামো পরিবর্তন করার ক্ষেত্রে মাইগ্রেশন আরও অনেক কিছু করতে পারে। উদাহরণস্বরূপ:

  • আপনি নতুন টেবিল তৈরি করতে পারেন
  • বিদ্যমান টেবিলের নাম পরিবর্তন করতে পারেন
  • কলাম রিনেম করতে পারেন
  • ইনডেক্স যোগ বা বাদ দিতে পারেন
  • ফরেন কী যোগ করতে পারেন

এগুলোর সবকিছুই করা যায় PHP কোডের মাধ্যমে। আর লারাভেল সেগুলো নিয়ে সঠিক SQL কোড তৈরি করে আপনার ডাটাবেজে অ্যাপ্লাই করবে।

একটা বিষয় লক্ষ্য করুন। মাইগ্রেশনগুলো ভার্সন কন্ট্রোলড। অর্থাৎ যখনই আপনি কোন পরিবর্তন করবেন, তখন এর একটা লগ রাখা হবে। যদি কোনদিন আপনাকে পুরোনো স্ট্রাকচারে ফিরে যেতে হয়, তাহলেও আপনি সেটা করতে পারবেন। কারণ সেটি রোলব্যাক করার জন্য সব লগই থাকবে।

একটি মাইগ্রেশন লিখার উদাহরণ

আসুন একটু প্রোগ্রাম লিখে দেখি কীভাবে মাইগ্রেশন লিখতে হয়:

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->foreignId('user_id')->constrained();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
};

এই মাইগ্রেশনটি একটি posts টেবিল তৈরি করবে। up() মেথডটি টেবিলটি তৈরি করার জন্য এবং down() মেথডটি টেবিলটি মুছে ফেলার জন্য। দেখুন, কতটা সিম্পল এবং সহজবোধ্য!

এরপর আমরা শুধু টারমিনালে php artisan migrate কমান্ডটি চালাব। এতে করে লারাভেল আমাদের এই মাইগ্রেশনটি রান করবে।

আর যদি আমরা চাই সব মাইগ্রেশন রোলব্যাক করতে, তাহলে লিখব php artisan migrate:rollback। এইভাবে দেখতে পাচ্ছেন মাইগ্রেশন লিখা এবং রান করা কতটা সহজ?

মাইগ্রেশনের সুবিধাগুলো

তাহলে বন্ধুরা, আপনারা এখন বুঝতে পেরেছেন ডাটাবেজ মাইগ্রেশন লারাভেলে কতটা গুরুত্বপূর্ণ। এর মূল সুবিধাগুলো হচ্ছে:

  • আপনাকে আর মানুষিক ভাবে SQL লিখতে হবে না। শুধু PHP কোড লিখলেই হবে।
  • আপনি খুবই সহজে ডাটাবেজের কাঠামো পরিবর্তন করতে পারবেন।
  • মাইগ্রেশনগুলো সবসময় ভার্সন কন্ট্রোলড থাকবে। রোলব্যাক করা সহজ।
  • টিম ওয়ার্কের সময় মাইগ্রেশন বেশ কাজে লাগবে। সবাই একই কাঠামোতে কাজ করতে পারবে।
  • কোডটি পড়তে এবং বুঝতে সহজ। SQL থেকে অনেক ভাল।

সুতরাং বন্ধুরা, লারাভেল শিখতে গেলে আপনাকে অবশ্যই মাইগ্রেশন শিখে নিতে হবে। এটি আপনার জীবনকে অনেক সহজ করে দিবে। তাই আজকেই ডাটাবেজ মাইগ্রেশন নিয়ে কাজ শুরু করুন। কোনও প্রশ্ন থাকলে আমাকে জিজ্ঞেস করতে পারেন। ধন্যবাদ!

--

--

Abu Sayed

Bangladeshi Full Stack Web Dev, Sys Admin & DevOps Engineer. Skills: Data analysis, SQL, Kubernetes. Python, PHP & Laravel. Me on: bd.linkedin.com/in/imabusayed