Yii ফ্রেমওয়ার্ক Active Record Pattern ব্যবহার করে ডেটাবেসের সাথে কার্যকরভাবে কাজ করতে সহায়তা করে। Active Record একটি ORM (Object-Relational Mapping) প্যাটার্ন, যার মাধ্যমে ডেটাবেস টেবিলের রেকর্ডকে ক্লাস অবজেক্ট হিসেবে ম্যানিপুলেট করা যায়। Yii ফ্রেমওয়ার্কে, ActiveRecord এর মাধ্যমে সহজে ডেটাবেসের রেকর্ড তৈরি, আপডেট, ডিলিট এবং রিড করা যায়, এবং এটি কোডিংকে আরও পরিষ্কার ও ব্যবস্থাপনাযোগ্য করে তোলে।
Active Record Pattern কি?
Active Record Pattern হল একটি ডিজাইন প্যাটার্ন যেখানে ডেটাবেস টেবিলের প্রতিটি রেকর্ড একটি ক্লাস অবজেক্টের মতো আচরণ করে। এতে, ক্লাসটি শুধুমাত্র ডেটা (যেমন ডেটাবেসের কলাম) ধারণ করে না, বরং সেই ডেটার সাথে সম্পর্কিত লজিক বা কার্যাবলীও ধারণ করে।
Yii ফ্রেমওয়ার্কে, ActiveRecord ক্লাসগুলি একটি টেবিলের সাথে সম্পর্কিত থাকে এবং এটি টেবিলের ডেটাকে প্রোগ্রামিং ভাষায় অবজেক্ট হিসেবে প্রতিস্থাপন করে। এইভাবে, SQL কোড লিখতে না হয়ে শুধুমাত্র PHP কোডের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা যায়।
Yii ফ্রেমওয়ার্কে Active Record ব্যবহার
Yii 2-এ ActiveRecord এর প্রধান সুবিধা হলো, আপনি ডেটাবেস টেবিলের সাথে কার্যকরভাবে কাজ করার জন্য কোনো SQL কোড লিখতে হয় না। এর বদলে, Yii স্বয়ংক্রিয়ভাবে SQL কোড জেনারেট করে এবং ডেটাবেসে অপারেশন পরিচালনা করে।
১. ActiveRecord ক্লাস তৈরি করা
Yii 2-এ, ActiveRecord ক্লাস সাধারণত yii\db\ActiveRecord থেকে উত্তরাধিকারিত হয়। একটি মডেল তৈরি করতে, আপনাকে ActiveRecord ক্লাস ব্যবহার করতে হয়। এটি ডেটাবেস টেবিলের সাথে সম্পর্ক স্থাপন করে।
উদাহরণ: ধরুন আপনার একটি Post নামক টেবিল রয়েছে যেখানে ব্লগ পোস্ট সংরক্ষিত থাকে। আপনি একটি Post মডেল তৈরি করতে পারেন যেমন:
namespace app\models;
use yii\db\ActiveRecord;
class Post extends ActiveRecord
{
// Post টেবিলের জন্য কার্যকরী কোড
}
এই Post ক্লাসটি স্বয়ংক্রিয়ভাবে post টেবিলের সাথে সম্পর্কিত হয়ে যায় এবং আপনি এই ক্লাস ব্যবহার করে টেবিলের রেকর্ডকে সহজে অ্যাক্সেস করতে পারবেন।
২. ডেটা নির্বাচন (Querying Data)
find() এবং findAll() পদ্ধতি ব্যবহার করে টেবিল থেকে ডেটা নির্বাচন করা যায়।
// একটি রেকর্ড নির্বাচন করা
$post = Post::find()->where(['id' => 1])->one();
// সব রেকর্ড নির্বাচন করা
$posts = Post::find()->all();
find()পদ্ধতি সাধারণত একক রেকর্ড ফেরত দেয়, যেখানেfindAll()পদ্ধতি একাধিক রেকর্ড ফেরত দেয়।where()পদ্ধতি SQLWHEREক্লজের মতো কাজ করে, যা রেকর্ডের শর্ত নির্ধারণ করতে সাহায্য করে।
৩. ডেটা ইনসার্ট করা (Inserting Data)
নতুন ডেটা ইনসার্ট করতে, ActiveRecord ক্লাসের একটি অবজেক্ট তৈরি করতে হয় এবং তারপর save() পদ্ধতি ব্যবহার করা হয়:
$post = new Post();
$post->title = 'New Post';
$post->content = 'This is a new post content.';
$post->author_id = 1;
if ($post->save()) {
echo "Post saved successfully!";
} else {
echo "Error saving post.";
}
save()পদ্ধতি ডেটাবেসে নতুন রেকর্ড সংরক্ষণ করে। যদি রেকর্ডটি সফলভাবে সংরক্ষিত হয়, তবে এটিtrueরিটার্ন করে।
৪. ডেটা আপডেট করা (Updating Data)
ডেটাবেসে একটি বিদ্যমান রেকর্ড আপডেট করতে, আপনি প্রথমে সেই রেকর্ডটি find() পদ্ধতি দিয়ে খুঁজে বের করবেন এবং তারপর save() ব্যবহার করবেন:
$post = Post::findOne(1); // id = 1 এর রেকর্ড নির্বাচন করা
$post->title = 'Updated Title';
$post->content = 'Updated content goes here.';
if ($post->save()) {
echo "Post updated successfully!";
} else {
echo "Error updating post.";
}
findOne()পদ্ধতি দিয়ে একটি নির্দিষ্ট রেকর্ড খুঁজে পাওয়া যায়।
৫. ডেটা ডিলিট করা (Deleting Data)
একটি রেকর্ড মুছে ফেলতে, delete() পদ্ধতি ব্যবহার করা হয়:
$post = Post::findOne(1);
if ($post->delete()) {
echo "Post deleted successfully!";
} else {
echo "Error deleting post.";
}
delete()পদ্ধতি ডেটাবেস থেকে রেকর্ড মুছে দেয়।
Active Record এর বিশেষ ফিচার
Yii ফ্রেমওয়ার্কে Active Record এর মাধ্যমে ডেটাবেস অপারেশন আরো শক্তিশালী এবং সহজ হয়। এর কিছু প্রধান সুবিধা হলো:
- প্রকৃত SQL কোড কম প্রয়োজন: Active Record ব্যবহার করে, আপনি ডেটাবেসের সাথে কাজ করার জন্য কোনো SQL কোড লিখতে হয় না।
- ডেটাবেস অপারেশন সহজ:
find(),save(),delete()ইত্যাদি পদ্ধতির মাধ্যমে সহজে ডেটাবেস অপারেশন করা যায়। - সার্বজনীন মডেল: Yii 2 এ Active Record ব্যবহারের মাধ্যমে একটি সাধারণ মডেল ক্লাস একাধিক টেবিলের জন্য ব্যবহৃত হতে পারে।
- অ্যাক্সেসযোগ্য: Active Record প্যাটার্ন ব্যবহারে কোডটি আরও পরিষ্কার, সংক্ষিপ্ত এবং সহজে মেইনটেনেবল হয়।
সারাংশ
Yii ফ্রেমওয়ার্কের Active Record Pattern একটি শক্তিশালী ORM প্যাটার্ন, যা ডেটাবেস টেবিলের রেকর্ডগুলোকে ক্লাস অবজেক্ট হিসেবে ব্যবহার করতে সহায়তা করে। এর মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা সহজ হয় এবং SQL কোডের প্রয়োজন কমে যায়। ActiveRecord ক্লাসের মাধ্যমে আপনি ডেটা নির্বাচন, ইনসার্ট, আপডেট এবং ডিলিট করতে পারেন, এবং এটি কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেন্স সহজ করে তোলে।
Read more