Yii ফ্রেমওয়ার্কে CRUD (Create, Read, Update, Delete) অপারেশনগুলি খুবই সহজে ইমপ্লিমেন্ট করা যায়, এবং মডেল ভ্যালিডেশনও খুব শক্তিশালী। Yii 2 এর মধ্যে ActiveRecord ক্লাসটি ব্যবহার করে CRUD অপারেশন সম্পন্ন করা হয়। এছাড়া, Yii 2-এর মডেল ভ্যালিডেশন ফিচার ডেটা ভ্যালিডেশন, নিরাপত্তা, এবং ইউজার ইনপুট যাচাই করার জন্য অত্যন্ত কার্যকর।
এখানে Yii 2-তে CRUD অপারেশন এবং মডেল ভ্যালিডেশন কিভাবে ইমপ্লিমেন্ট করা যায় তা বিস্তারিতভাবে দেখানো হয়েছে।
১. Yii 2-এ CRUD অপারেশন
Yii 2-তে CRUD অপারেশন সম্পন্ন করার জন্য ActiveRecord মডেল ব্যবহৃত হয়। ActiveRecord ক্লাস ডেটাবেস টেবিলের সাথে সম্পর্কিত মডেল ক্লাস তৈরিতে সহায়তা করে এবং CRUD অপারেশনগুলো সহজেই পরিচালনা করতে পারে।
১.১ Create (তৈরি করা)
নতুন ডেটা সেভ করতে save() মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি নতুন Post তৈরি করা:
use app\models\Post;
$post = new Post();
$post->title = 'New Post Title';
$post->content = 'This is the content of the new post.';
if ($post->save()) {
echo 'Post saved successfully!';
} else {
echo 'Failed to save post!';
}
- এখানে
save()মেথডটি ডেটাবেসে একটি নতুন রেকর্ড সেভ করবে।
১.২ Read (পড়ানো)
ডেটাবেস থেকে ডেটা পড়তে find(), findAll() ইত্যাদি মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি পোস্টের তথ্য পড়া:
$post = Post::findOne(1); // ID 1 এর পোস্ট খোঁজা
if ($post !== null) {
echo $post->title;
echo $post->content;
} else {
echo 'Post not found!';
}
findOne()মেথডটি নির্দিষ্ট ID দিয়ে একটি একক রেকর্ড খুঁজে পায়।findAll()মেথডটি সমস্ত রেকর্ড এনে দেয়।
১.৩ Update (আপডেট করা)
ডেটাবেসে বিদ্যমান ডেটা আপডেট করতে save() মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি পোস্ট আপডেট করা:
$post = Post::findOne(1);
if ($post !== null) {
$post->title = 'Updated Title';
$post->content = 'Updated content.';
if ($post->save()) {
echo 'Post updated successfully!';
} else {
echo 'Failed to update post!';
}
} else {
echo 'Post not found!';
}
save()মেথডটি মডেলটি ডেটাবেসে সেভ করে, যদি রেকর্ডটি বিদ্যমান থাকে তবে এটি আপডেট হবে।
১.৪ Delete (মুছে ফেলা)
ডেটাবেস থেকে রেকর্ড মুছে ফেলতে delete() মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি পোস্ট মুছে ফেলা:
$post = Post::findOne(1);
if ($post !== null) {
if ($post->delete()) {
echo 'Post deleted successfully!';
} else {
echo 'Failed to delete post!';
}
} else {
echo 'Post not found!';
}
delete()মেথডটি ডেটাবেস থেকে রেকর্ডটি মুছে ফেলবে।
২. মডেল ভ্যালিডেশন
Yii 2-এ মডেল ভ্যালিডেশন ডেটা সঠিকভাবে ডেটাবেসে সেভ করার আগে বিভিন্ন নিয়মের মাধ্যমে যাচাই করা হয়। মডেল ভ্যালিডেশন করতে rules() মেথড ব্যবহার করা হয়, যা ডেটার বিভিন্ন শর্ত পূরণ করতে নিশ্চিত করে।
২.১ মডেল ভ্যালিডেশন উদাহরণ
ধরা যাক, আমাদের একটি Post মডেল রয়েছে এবং আমরা এই মডেলটিতে কিছু ভ্যালিডেশন রুলস যোগ করতে চাই।
namespace app\models;
use yii\db\ActiveRecord;
class Post extends ActiveRecord
{
public static function tableName()
{
return 'post';
}
public function rules()
{
return [
[['title', 'content'], 'required'], // title এবং content অবশ্যই প্রয়োজনীয়
['title', 'string', 'max' => 255], // title এর দৈর্ঘ্য 255 এর বেশি হতে পারবে না
['content', 'string'], // content এর ধরন string হতে হবে
['title', 'unique'], // title অবশ্যই ইউনিক হতে হবে
];
}
}
[['title', 'content'], 'required']: এটি নির্দেশ করে যেtitleএবংcontentক্ষেত্র দুটি ফিল্ড ভ্যালিড হতে হবে, অর্থাৎ এগুলো ফাঁকা রাখা যাবে না।['title', 'string', 'max' => 255]:titleক্ষেত্রটি 255 অক্ষরের বেশি হতে পারবে না।['title', 'unique']: এটি নিশ্চিত করে যেtitleফিল্ডের মানটি ইউনিক থাকবে, অর্থাৎ ডুপ্লিকেট হবে না।
২.২ মডেল ভ্যালিডেশন ব্যবহার
মডেল ভ্যালিডেশন চালানোর জন্য validate() মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি নতুন Post তৈরি করার সময় ভ্যালিডেশন পরীক্ষা করা:
$post = new Post();
$post->title = 'New Post Title';
$post->content = 'This is the content of the new post.';
if ($post->validate()) {
// যদি ভ্যালিডেশন সফল হয়, তাহলে ডেটাবেসে সেভ হবে
$post->save();
echo 'Post saved successfully!';
} else {
// যদি ভ্যালিডেশন ব্যর্থ হয়, তাহলে ত্রুটি মেসেজ দেখাবে
echo 'Validation failed: ' . implode(', ', $post->errors);
}
validate()মেথডটি মডেলটির সমস্ত ভ্যালিডেশন চেক করে এবং যদি কোনও ত্রুটি থাকে, তবেerrorsঅ্যারে ত্রুটির বিবরণ ধারণ করবে।
২.৩ কাস্টম ভ্যালিডেশন
কখনও কখনও আপনাকে কাস্টম ভ্যালিডেশন যুক্ত করতে হতে পারে। উদাহরণস্বরূপ, যদি আমরা নিশ্চিত করতে চাই যে একটি Post এর content ফিল্ডে কমপক্ষে ১০০ শব্দ থাকতে হবে, তবে কাস্টম ভ্যালিডেশন রুল ব্যবহার করা যেতে পারে:
public function rules()
{
return [
['content', 'validateContentLength'],
];
}
public function validateContentLength($attribute, $params)
{
if (str_word_count($this->content) < 100) {
$this->addError($attribute, 'Content must contain at least 100 words.');
}
}
- এখানে
validateContentLength()মেথডটি কাস্টম ভ্যালিডেশন রুল হিসাবে কাজ করবে এবং যদিcontentফিল্ডে ১০০ শব্দের কম থাকে, তাহলে একটি ত্রুটি বার্তা যোগ করবে।
সারাংশ
Yii 2 ফ্রেমওয়ার্কে CRUD অপারেশন অত্যন্ত সহজ এবং কার্যকরী। ActiveRecord ক্লাসের মাধ্যমে ডেটাবেসে নতুন ডেটা তৈরি (Create), পড়া (Read), আপডেট (Update) এবং মুছে ফেলা (Delete) খুবই সহজ। এছাড়া, মডেল ভ্যালিডেশন Yii 2-এ শক্তিশালী ফিচার হিসেবে কাজ করে, যা ইউজারের ইনপুট যাচাই এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে। rules() মেথডের মাধ্যমে ডেটার বিভিন্ন শর্ত ও সীমাবদ্ধতা নির্ধারণ করা যায় এবং কাস্টম ভ্যালিডেশন রুলও সহজেই যোগ করা যায়।