CakePHP তে Model Associations ব্যবহার করে আপনি ডাটাবেস টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করতে পারেন। এই সম্পর্কগুলি ডাটাবেসের টেবিলগুলোর মধ্যে ডাটা শেয়ার করার জন্য ব্যবহৃত হয়। CakePHP তিন ধরনের মূল সম্পর্ক সাপোর্ট করে: One-to-One, One-to-Many, এবং Many-to-Many। এই সম্পর্কগুলির মাধ্যমে আপনার অ্যাপ্লিকেশনের ডাটাবেস ডিজাইনকে আরও শক্তিশালী এবং কার্যকরী করা সম্ভব।
One-to-One Association
One-to-One সম্পর্ক তখন ব্যবহৃত হয় যখন একটি টেবিলের একটি রেকর্ড শুধুমাত্র অন্য একটি টেবিলের এক রেকর্ডের সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি User এবং Profile টেবিলের মধ্যে One-to-One সম্পর্ক থাকতে পারে, যেখানে প্রতিটি ইউজারের একটি একক প্রোফাইল থাকবে।
One-to-One সম্পর্ক তৈরি করা
CakePHP তে One-to-One সম্পর্ক তৈরি করতে, আপনি দুটি মডেলে hasOne এবং belongsTo অ্যাসোসিয়েশন ব্যবহার করেন।
// src/Model/Table/UsersTable.php
$this->hasOne('Profiles', [
'foreignKey' => 'user_id',
'dependent' => true,
]);
// src/Model/Table/ProfilesTable.php
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
]);
- hasOne:
Usersমডেলটির প্রতিটি রেকর্ডের সাথে একটি প্রোফাইল থাকবে। - belongsTo:
Profilesমডেলটির প্রতিটি রেকর্ডের সাথে একটি ইউজার থাকবে।
ব্যবহার
এখন, আপনি Users মডেল ব্যবহার করে সংশ্লিষ্ট Profile ডাটা অ্যাক্সেস করতে পারেন:
$user = $this->Users->get($userId, ['contain' => ['Profiles']]);
$profile = $user->profile;
এটি সেই ইউজারের প্রোফাইল সম্পর্কিত ডাটা সংগ্রহ করবে।
One-to-Many Association
One-to-Many সম্পর্ক তখন ব্যবহৃত হয় যখন একটি টেবিলের একটি রেকর্ডের সাথে একাধিক রেকর্ড সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি Post এবং Comment টেবিলের মধ্যে One-to-Many সম্পর্ক থাকতে পারে, যেখানে একটি পোস্টে একাধিক মন্তব্য থাকবে।
One-to-Many সম্পর্ক তৈরি করা
CakePHP তে One-to-Many সম্পর্ক তৈরি করতে, আপনি hasMany এবং belongsTo অ্যাসোসিয়েশন ব্যবহার করেন।
// src/Model/Table/PostsTable.php
$this->hasMany('Comments', [
'foreignKey' => 'post_id',
]);
// src/Model/Table/CommentsTable.php
$this->belongsTo('Posts', [
'foreignKey' => 'post_id',
]);
- hasMany:
Postsমডেলটির একটি রেকর্ডে অনেক Comments থাকতে পারে। - belongsTo:
Commentsমডেলটির প্রতিটি রেকর্ড একটি Post এর সাথে সম্পর্কিত।
ব্যবহার
এখন, আপনি Posts মডেল ব্যবহার করে সংশ্লিষ্ট Comments ডাটা অ্যাক্সেস করতে পারেন:
$post = $this->Posts->get($postId, ['contain' => ['Comments']]);
$comments = $post->comments;
এটি সেই পোস্টের সব মন্তব্য সংগ্রহ করবে।
Many-to-Many Association
Many-to-Many সম্পর্ক তখন ব্যবহৃত হয় যখন দুটি টেবিলের মধ্যে একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি Students এবং Courses টেবিলের মধ্যে Many-to-Many সম্পর্ক থাকতে পারে, যেখানে একজন ছাত্র একাধিক কোর্সে ভর্তি হতে পারে এবং একটি কোর্সে একাধিক ছাত্র থাকতে পারে।
Many-to-Many সম্পর্ক তৈরি করা
CakePHP তে Many-to-Many সম্পর্ক তৈরি করতে, আপনি belongsToMany অ্যাসোসিয়েশন ব্যবহার করেন। সাধারণত, একটি join table (যেমন students_courses) এর মাধ্যমে এই সম্পর্ক গড়ে তোলা হয়।
// src/Model/Table/StudentsTable.php
$this->belongsToMany('Courses', [
'foreignKey' => 'student_id',
'targetForeignKey' => 'course_id',
'joinTable' => 'students_courses',
]);
// src/Model/Table/CoursesTable.php
$this->belongsToMany('Students', [
'foreignKey' => 'course_id',
'targetForeignKey' => 'student_id',
'joinTable' => 'students_courses',
]);
- belongsToMany:
StudentsএবংCoursesমডেলগুলির মধ্যে একটি Many-to-Many সম্পর্ক তৈরি হয়, এবং students_courses টেবিলটি এই সম্পর্কটি পরিচালনা করে।
ব্যবহার
এখন, আপনি Students মডেল ব্যবহার করে সংশ্লিষ্ট Courses ডাটা অ্যাক্সেস করতে পারেন:
$student = $this->Students->get($studentId, ['contain' => ['Courses']]);
$courses = $student->courses;
এটি সেই ছাত্রের সব কোর্স সংগ্রহ করবে।
Model Associations এর মাধ্যমে সুবিধা
CakePHP তে Model Associations ব্যবহারের মাধ্যমে আপনি বিভিন্ন সুবিধা পেতে পারেন:
- ডাটা ইন্টিগ্রিটি: প্রতিটি সম্পর্কিত টেবিলের মধ্যে ডাটা সঠিকভাবে সম্পর্কিত থাকে।
- কোডের পুনঃব্যবহারযোগ্যতা: একবার অ্যাসোসিয়েশন তৈরি করলে, আপনি সহজেই রিলেটেড ডাটা অ্যাক্সেস করতে পারবেন।
- স্বয়ংক্রিয় লোডিং:
containব্যবহার করে একাধিক সম্পর্কিত ডাটা একই সাথে লোড করা সম্ভব। - সহজ কুয়েরি বিল্ডিং: রিলেটেড টেবিল থেকে ডাটা একসাথে নিয়ে আসা সহজ হয়ে যায়।
CakePHP তে Model Associations ব্যবহার করে আপনি ডাটাবেস টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করতে পারেন। One-to-One, One-to-Many, এবং Many-to-Many সম্পর্কগুলো অ্যাপ্লিকেশনটির ডাটা মডেলকে আরও সংগঠিত এবং কার্যকরী করে তোলে। এই অ্যাসোসিয়েশনগুলির মাধ্যমে ডাটাবেসের টেবিলগুলোর মধ্যে ডাটা সম্পর্কিতভাবে সঞ্চালিত হয়, এবং কোডিং প্রক্রিয়া সহজ হয়।
Read more