Model তৈরি করা এবং ডেটাবেস কনফিগার করা

Model তৈরি এবং ডাটাবেস ইন্টিগ্রেশন - এমভিসি ফ্রেমওয়ার্ক (MVC Framework) - Web Development

228

Model এমভিসি ফ্রেমওয়ার্কের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনটির ডেটা, লজিক, এবং ডেটাবেসের সঙ্গে যোগাযোগ করে। Model মূলত ডেটাবেসের তথ্য সংগ্রহ, সংরক্ষণ এবং সংশোধন করার কাজ করে, এবং তা কন্ট্রোলার বা ভিউয়ের মাধ্যমে প্রদর্শিত হয়। এটির সাহায্যে ডেটাবেস কনফিগারেশন এবং ডেটার মধ্যে সমন্বয় তৈরি করা হয়।

Model তৈরি করা


এমভিসি ফ্রেমওয়ার্কে, Model হলো ডেটা-সংশ্লিষ্ট লজিক পরিচালনা করা শ্রেণি (class)। এটি ডেটাবেস থেকে ডেটা সংগ্রহ, আপডেট, ডিলিট বা তৈরি করার কাজ করে। মডেল সাধারণত একটি ক্লাসের মাধ্যমে তৈরি করা হয়, এবং এটি সাধারণত একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।

Model Class তৈরি করা

প্রথমে, মডেল ক্লাস তৈরি করতে হবে যেটি ডেটাবেসের তথ্য পরিচালনা করবে। ধরুন, আমরা একটি ব্লগ অ্যাপ্লিকেশন তৈরি করছি, যেখানে একটি Post মডেল থাকবে, যা ব্লগ পোস্টের তথ্য সংরক্ষণ করবে।

// PHP (Laravel এর উদাহরণ)
class Post extends Model {
    protected $table = 'posts'; // ডেটাবেস টেবিলের নাম
    protected $fillable = ['title', 'content']; // যেসব ফিল্ডে ডেটা পুশ করা যাবে
}

এখানে, Post ক্লাসটি posts টেবিলের প্রতিনিধিত্ব করছে। fillable প্রপার্টি দ্বারা সেই সমস্ত ক্ষেত্র নির্দেশ করা হয়েছে, যেগুলোতে ডেটা অ্যাসাইন করা যেতে পারে।

ডেটাবেস কনফিগার করা


ডেটাবেস কনফিগারেশন সাধারণত অ্যাপ্লিকেশনের config/database.php ফাইলে করা হয়। এখানে ডেটাবেসের ধরন, হোস্ট, ইউজারনেম, পাসওয়ার্ড ইত্যাদি কনফিগার করা হয়।

ডেটাবেস কনফিগারেশন উদাহরণ

// config/database.php

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'your_database'),
    'username' => env('DB_USERNAME', 'your_username'),
    'password' => env('DB_PASSWORD', 'your_password'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],

এখানে, ডেটাবেসের নাম, ইউজারনেম এবং পাসওয়ার্ড সঠিকভাবে কনফিগার করা হয়েছে। আপনি .env ফাইল থেকে ডেটাবেসের তথ্য লোড করতে পারেন, যাতে এই কনফিগারেশনটি পরিবেশ অনুযায়ী পরিবর্তিত হতে পারে।

ডেটাবেসের সঙ্গে মডেল ইন্টারঅ্যাকশন


মডেল ডেটাবেসের সঙ্গে যোগাযোগ করতে বিভিন্ন ধরনের মেথড ব্যবহার করতে পারে। যেমন:

১. ডেটা পড়া (Fetching Data)

// সমস্ত পোস্ট পড়া
$posts = Post::all();

// একটি নির্দিষ্ট পোস্ট পড়া
$post = Post::find($id);

২. ডেটা সংরক্ষণ (Storing Data)

// নতুন পোস্ট তৈরি
$post = new Post();
$post->title = 'New Post';
$post->content = 'This is the content of the post.';
$post->save();

৩. ডেটা আপডেট (Updating Data)

// একটি পোস্ট আপডেট করা
$post = Post::find($id);
$post->title = 'Updated Title';
$post->save();

৪. ডেটা ডিলিট করা (Deleting Data)

// একটি পোস্ট মুছে ফেলা
$post = Post::find($id);
$post->delete();

ডেটাবেস মাইগ্রেশন (Database Migration)


ডেটাবেসের স্কিমা পরিবর্তন করার জন্য Migration ব্যবহার করা হয়। এটি ডেটাবেসের টেবিল তৈরি, পরিবর্তন বা মুছে ফেলার জন্য একটি পদ্ধতি প্রদান করে।

মাইগ্রেশন তৈরি করা

php artisan make:migration create_posts_table --create=posts

এটি একটি নতুন মাইগ্রেশন ফাইল তৈরি করবে। এরপর সেই ফাইলটি ডেটাবেস টেবিলের কাঠামো নির্ধারণ করার জন্য এডিট করতে হবে।

মাইগ্রেশন উদাহরণ

// create_posts_table.php মাইগ্রেশন ফাইল
public function up() {
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

public function down() {
    Schema::dropIfExists('posts');
}

এই মাইগ্রেশন ফাইলটি posts টেবিল তৈরি করবে, যেখানে title এবং content ফিল্ড থাকবে।

মাইগ্রেশন চালানো

php artisan migrate

এই কমান্ডটি মাইগ্রেশন চালাবে এবং ডেটাবেসে টেবিল তৈরি করবে।


সারসংক্ষেপ


Model তৈরি করা এবং ডেটাবেস কনফিগার করা এমভিসি ফ্রেমওয়ার্কের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। মডেল ক্লাসটি ডেটাবেসের সাথে যোগাযোগের দায়িত্ব পালন করে এবং তা কন্ট্রোলারের মাধ্যমে ভিউতে উপস্থাপিত হয়। ডেটাবেস কনফিগারেশন এবং মাইগ্রেশন ব্যবহারের মাধ্যমে ডেটাবেসের কাঠামো সহজে পরিচালনা করা যায়, এবং অ্যাপ্লিকেশনটির স্কেলেবিলিটি এবং রক্ষণাবেক্ষণ সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...