FuelPHP একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচারের উপর ভিত্তি করে কাজ করে এবং এটি ডাটাবেস মডেল সম্পর্ক ব্যবস্থাপনার জন্য বেশ শক্তিশালী ফিচার প্রদান করে। One-to-One, One-to-Many, এবং Many-to-Many সম্পর্কগুলো FuelPHP তে সহজে তৈরি করা যায় এবং এতে ডাটাবেস সম্পর্কগুলি মডেল ক্লাসের মাধ্যমে ব্যবস্থাপনা করা হয়।
এখানে FuelPHP এর মধ্যে One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক কিভাবে তৈরি করা হয় তার বিস্তারিত আলোচনা করা হলো।
1. One-to-One Relationship (একটি একটি সম্পর্ক)
One-to-One Relationship হল একটি সম্পর্ক যেখানে একটি টেবিলের একটি রেকর্ড অন্য টেবিলের একটি রেকর্ডের সাথে সম্পর্কিত থাকে।
উদাহরণ:
ধরা যাক, আমাদের একটি User টেবিল এবং একটি Profile টেবিল রয়েছে, এবং প্রতিটি User এর সাথে একটি Profile যুক্ত থাকবে।
Step 1: Database Structure
Users টেবিল:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255),
email VARCHAR(255)
);
Profiles টেবিল:
CREATE TABLE profiles (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
bio TEXT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
Step 2: Model Classes
User Model (app/classes/model/user.php):
class Model_User extends Orm\Model {
protected static $_properties = array(
'id',
'username',
'email',
);
// One-to-One Relationship: A user has one profile
protected static $_has_one = array(
'profile' => array(
'model_to' => 'Model_Profile',
'key_from' => 'id',
'key_to' => 'user_id',
),
);
}
Profile Model (app/classes/model/profile.php):
class Model_Profile extends Orm\Model {
protected static $_properties = array(
'id',
'user_id',
'bio',
);
// One-to-One Relationship: A profile belongs to one user
protected static $_belongs_to = array(
'user' => array(
'model_to' => 'Model_User',
'key_from' => 'user_id',
'key_to' => 'id',
),
);
}
Step 3: Accessing the Data
একটি ব্যবহারকারী এবং তার প্রোফাইল একসাথে আনতে:
$user = Model_User::find(1); // ID 1 এর ব্যবহারকারী
$profile = $user->profile; // সেই ব্যবহারকারীর প্রোফাইল
echo $profile->bio;
2. One-to-Many Relationship (একটি অনেকের সম্পর্ক)
One-to-Many Relationship হল এমন একটি সম্পর্ক যেখানে একটি টেবিলের একটি রেকর্ড অনেক টেবিলের রেকর্ডের সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি Blog Post টেবিল এবং অনেক Comment টেবিলের সম্পর্ক।
উদাহরণ:
ধরা যাক, আমাদের একটি Post টেবিল এবং একটি Comment টেবিল রয়েছে, যেখানে প্রতিটি Post এর সাথে অনেক Comment থাকতে পারে।
Step 1: Database Structure
Posts টেবিল:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
content TEXT
);
Comments টেবিল:
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
post_id INT,
content TEXT,
FOREIGN KEY (post_id) REFERENCES posts(id)
);
Step 2: Model Classes
Post Model (app/classes/model/post.php):
class Model_Post extends Orm\Model {
protected static $_properties = array(
'id',
'title',
'content',
);
// One-to-Many Relationship: A post has many comments
protected static $_has_many = array(
'comments' => array(
'model_to' => 'Model_Comment',
'key_from' => 'id',
'key_to' => 'post_id',
),
);
}
Comment Model (app/classes/model/comment.php):
class Model_Comment extends Orm\Model {
protected static $_properties = array(
'id',
'post_id',
'content',
);
// Many-to-One Relationship: A comment belongs to one post
protected static $_belongs_to = array(
'post' => array(
'model_to' => 'Model_Post',
'key_from' => 'post_id',
'key_to' => 'id',
),
);
}
Step 3: Accessing the Data
একটি পোস্ট এবং তার সমস্ত মন্তব্য একসাথে আনতে:
$post = Model_Post::find(1); // ID 1 এর পোস্ট
$comments = $post->comments; // সেই পোস্টের সব মন্তব্য
foreach ($comments as $comment) {
echo $comment->content;
}
3. Many-to-Many Relationship (অনেকের অনেকের সম্পর্ক)
Many-to-Many Relationship হল এমন একটি সম্পর্ক যেখানে একটি টেবিলের অনেক রেকর্ড অন্য টেবিলের অনেক রেকর্ডের সাথে সম্পর্কিত থাকে। এই সম্পর্কটি সাধারণত একটি pivot table ব্যবহার করে বাস্তবায়ন করা হয়।
উদাহরণ:
ধরা যাক, আমাদের একটি Student টেবিল এবং একটি Course টেবিল রয়েছে, যেখানে অনেক Student বিভিন্ন Course তে ভর্তি হতে পারে এবং প্রতিটি Course-এ অনেক Student থাকতে পারে।
Step 1: Database Structure
Students টেবিল:
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
Courses টেবিল:
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
Student_Courses Pivot Table:
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
Step 2: Model Classes
Student Model (app/classes/model/student.php):
class Model_Student extends Orm\Model {
protected static $_properties = array(
'id',
'name',
);
// Many-to-Many Relationship: A student can have many courses
protected static $_many_many = array(
'courses' => array(
'model_to' => 'Model_Course',
'key_from' => 'id',
'key_to' => 'id',
'table' => 'student_courses', // Pivot table
),
);
}
Course Model (app/classes/model/course.php):
class Model_Course extends Orm\Model {
protected static $_properties = array(
'id',
'name',
);
// Many-to-Many Relationship: A course can have many students
protected static $_many_many = array(
'students' => array(
'model_to' => 'Model_Student',
'key_from' => 'id',
'key_to' => 'id',
'table' => 'student_courses', // Pivot table
),
);
}
Step 3: Accessing the Data
একটি ছাত্র এবং তার কোর্সগুলি একসাথে আনতে:
$student = Model_Student::find(1); // ID 1 এর ছাত্র
$courses = $student->courses; // সেই ছাত্রের কোর্সগুলো
foreach ($courses as $course) {
echo $course->name;
}
সারাংশ:
- One-to-One সম্পর্কের মাধ্যমে একটি রেকর্ড আরেকটি রেকর্ডের সাথে সম্পর্কিত হয়।
- One-to-Many সম্পর্কের মাধ্যমে একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত হতে পারে।
- Many-to-Many সম্পর্কের মাধ্যমে দুটি টেবিল একে অপরের সাথে অনেক সম্পর্ক তৈরি করতে পারে, এবং এটি সাধারণত একটি pivot table ব্যবহার করে বাস্তবায়ন করা হয়।
FuelPHP ORM এর মাধ্যমে আপনি সহজেই এই ধরনের সম্পর্ক গঠন করতে পারেন, এবং এগুলোর মাধ্যমে ডাটাবেসে সম্পর্কিত তথ্য সঠিকভাবে এক্সেস এবং ম্যানেজ করতে পারবেন।
Read more