FuelPHP একটি শক্তিশালী এবং নমনীয় PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) ডিজাইন প্যাটার্ন অনুসরণ করে এবং ডাটাবেসের সাথে সহজেই কাজ করার জন্য বিভিন্ন বৈশিষ্ট্য প্রদান করে। FuelPHP-তে Model তৈরি এবং ডাটাবেসের সাথে কাজ করা খুবই সহজ এবং এতে অন্তর্নির্মিত ORM (Object-Relational Mapping) সমর্থন রয়েছে, যা ডাটাবেসের টেবিলের সাথে মডেল ক্লাসগুলো ম্যাপ করে।
এখানে FuelPHP-তে Model তৈরি এবং ডাটাবেসের সাথে কাজ করার একটি বিস্তারিত গাইড দেওয়া হলো।
1. FuelPHP তে Model তৈরি করা
FuelPHP-তে মডেল তৈরি করার জন্য আপনাকে একটি ক্লাস তৈরি করতে হবে, যেটি আপনার ডাটাবেস টেবিলের সাথে ইন্টারঅ্যাক্ট করবে। FuelPHP ORM ব্যবহার করে ডাটাবেস টেবিলের সাথে সম্পর্ক স্থাপন করে, যেখানে ডাটাবেস টেবিলের প্রতিটি রেকর্ড একটি মডেল অবজেক্ট হিসেবে কাজ করে।
Model তৈরি করার ধাপ:
- Model ক্লাস তৈরি করা: FuelPHP তে মডেল তৈরি করতে, প্রথমে
fuel/app/classes/modelডিরেক্টরিতে একটি PHP ক্লাস তৈরি করতে হবে।
উদাহরণ:
ধরা যাক, আপনি একটি User মডেল তৈরি করতে চান যেটি users টেবিলের সাথে কাজ করবে।
// file: fuel/app/classes/model/user.php
namespace Model;
class User extends \Orm\Model
{
// মডেলটি কোন টেবিলের সাথে সম্পর্কিত হবে তা নির্ধারণ
protected static $_table_name = 'users';
// মডেলটির জন্য প্রাথমিক কী নির্ধারণ
protected static $_primary_key = array('id');
// মডেলটির জন্য সম্পর্কিত ফিল্ডসমূহের প্রপার্টি
protected static $_properties = array(
'id',
'name',
'email',
'password',
'created_at',
'updated_at',
);
}
এখানে:
$_table_name: এটি ডাটাবেস টেবিলের নাম নির্ধারণ করে। এই ক্ষেত্রে, এটিusersটেবিলের সাথে সম্পর্কিত।$_primary_key: এটি ডাটাবেসের প্রাথমিক কী (primary key) নির্ধারণ করে। সাধারণতidফিল্ডটি প্রাথমিক কী হয়ে থাকে।$_properties: এটি মডেলটির ফিল্ড বা কলামগুলোর নাম নির্ধারণ করে, যেগুলোর মাধ্যমে টেবিলের ডেটার সাথে মডেলটির সম্পর্ক তৈরি হয়।
2. ডাটাবেসের সাথে মডেল ইন্টারঅ্যাকশন
FuelPHP এর ORM (Object-Relational Mapping) এর মাধ্যমে ডাটাবেস টেবিলের সাথে যোগাযোগ করা যায়। ORM ডাটাবেসের রেকর্ডগুলিকে মডেল অবজেক্টে রূপান্তরিত করে এবং মডেল ব্যবহার করে ডাটাবেসের ডেটা রিট্রিভ, ইনসার্ট, আপডেট বা ডিলিট করা যায়।
রেকর্ড রিট্রিভ করা:
ORM ব্যবহার করে ডাটাবেস থেকে রেকর্ড পড়ার জন্য find() অথবা find_all() মেথড ব্যবহার করা যায়।
উদাহরণ:
// একটি একক ব্যবহারকারী রেকর্ড রিট্রিভ করা
$user = Model\User::find(1); // id 1 এর ব্যবহারকারী রেকর্ড
// সমস্ত ব্যবহারকারীদের রেকর্ড রিট্রিভ করা
$users = Model\User::find_all(); // সমস্ত ব্যবহারকারী রেকর্ড
ডেটা ইনসার্ট বা আপডেট করা:
FuelPHP ORM এর মাধ্যমে ডাটাবেসে নতুন রেকর্ড ইনসার্ট করা বা বিদ্যমান রেকর্ড আপডেট করা যায়।
উদাহরণ:
// নতুন ব্যবহারকারী ইনসার্ট করা
$user = Model\User::forge(array(
'name' => 'John Doe',
'email' => 'john.doe@example.com',
'password' => md5('password'), // সাধারণত password hashing ব্যবহার করা উচিত
));
$user->save(); // ডাটাবেসে সংরক্ষণ
// বিদ্যমান ব্যবহারকারীর রেকর্ড আপডেট করা
$user = Model\User::find(1); // id 1 এর ব্যবহারকারী রেকর্ড
$user->email = 'new.email@example.com'; // ইমেইল আপডেট
$user->save(); // আপডেট করা রেকর্ড ডাটাবেসে সংরক্ষণ
ডেটা ডিলিট করা:
এছাড়াও, ORM এর মাধ্যমে ডাটাবেস থেকে রেকর্ড মুছতে পারবেন।
উদাহরণ:
// id 1 এর ব্যবহারকারী রেকর্ড ডিলিট করা
$user = Model\User::find(1);
$user->delete(); // ডিলিট করা
3. ডাটাবেস সম্পর্ক (Relationships)
FuelPHP ORM সাপোর্ট করে বিভিন্ন ধরনের ডাটাবেস সম্পর্ক, যেমন One-to-Many, Many-to-One, এবং Many-to-Many সম্পর্ক। সম্পর্কগুলো মডেল ক্লাসে নির্ধারণ করা হয়।
One-to-Many Relationship:
এটা এমন একটি সম্পর্ক যেখানে একটি রেকর্ড অন্য রেকর্ডের সাথে একাধিক সম্পর্কিত হতে পারে। উদাহরণস্বরূপ, একটি User এর অনেকগুলি Post থাকতে পারে।
namespace Model;
class User extends \Orm\Model
{
protected static $_table_name = 'users';
protected static $_primary_key = array('id');
protected static $_properties = array('id', 'name', 'email');
// One-to-Many relationship (একজন ব্যবহারকারী অনেক পোস্টের সাথে সম্পর্কিত)
protected static $_has_many = array(
'posts' => array(
'key_from' => 'id',
'model_to' => 'Model\Post',
'key_to' => 'user_id',
'cascade_save' => true,
'cascade_delete' => false,
),
);
}
Many-to-One Relationship:
এটি এমন একটি সম্পর্ক যেখানে অনেক রেকর্ড একটি রেকর্ডের সাথে সম্পর্কিত থাকে।
namespace Model;
class Post extends \Orm\Model
{
protected static $_table_name = 'posts';
protected static $_primary_key = array('id');
protected static $_properties = array('id', 'title', 'content', 'user_id');
// Many-to-One relationship (প্রত্যেক পোস্ট একটি ব্যবহারকারীর সাথে সম্পর্কিত)
protected static $_belongs_to = array(
'user' => array(
'key_from' => 'user_id',
'model_to' => 'Model\User',
'key_to' => 'id',
'cascade_save' => false,
'cascade_delete' => false,
),
);
}
4. FuelPHP ORM এর অন্যান্য বৈশিষ্ট্য:
- Validation: ORM এর মধ্যে আপনি মডেল ডেটা ভ্যালিডেশন করতে পারেন।
- Query Builder: আপনি কাস্টম কোয়েরি তৈরি করতে FuelPHP এর Query Builder ব্যবহার করতে পারেন।
- Soft Delete: আপনি "soft delete" ব্যবহার করতে পারেন যেখানে ডিলিট করার পরিবর্তে রেকর্ডটি অ্যাক্টিভ বা ইনঅ্যাক্টিভ হিসেবে চিহ্নিত করা হয়।
- Timestamps: FuelPHP আপনাকে created_at এবং updated_at টাইমস্ট্যাম্পগুলি স্বয়ংক্রিয়ভাবে হ্যান্ডেল করার সুযোগ দেয়।
FuelPHP তে Model তৈরি এবং Database এর সাথে কাজ করা খুবই সহজ এবং শক্তিশালী। ORM এর মাধ্যমে আপনি সহজে ডাটাবেসের টেবিলের সাথে সম্পর্ক স্থাপন করতে পারেন এবং কাস্টম কোয়েরি তৈরি করে ডেটা রিট্রিভ, ইনসার্ট, আপডেট বা ডিলিট করতে পারেন। এর মাধ্যমে আপনি জটিল ডাটাবেস সম্পর্ক এবং বাণিজ্যিক প্রক্রিয়াগুলিকে দক্ষভাবে পরিচালনা করতে পারবেন।
Read more