Skill

মডেলস এবং ডেটাবেস ইন্টিগ্রেশন

জী ফ্রেমওয়ার্ক (Yii Framework) - Web Development

313

Yii ফ্রেমওয়ার্কের মডেলস (Models) এবং ডেটাবেস ইন্টিগ্রেশন (Database Integration) একটি শক্তিশালী ডাটা ম্যানিপুলেশন টুল সরবরাহ করে, যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সহায়তা করে। Yii ফ্রেমওয়ার্ক মডেলস ব্যবহার করে ডেটাবেসের ডেটা সংরক্ষণ, পুনরুদ্ধার, আপডেট এবং মুছে ফেলার কার্যক্রম সহজ এবং সুরক্ষিতভাবে পরিচালনা করা যায়।


১. মডেলস (Models) কী?

Yii ফ্রেমওয়ার্কে মডেল হলো এমন একটি ক্লাস যা ডেটাবেসের টেবিল বা অন্যান্য ডেটা স্টোরেজ সিস্টেমের সাথে সম্পর্কিত। মডেল কনট্রোলার থেকে ডেটা গ্রহণ করে এবং ভিউতে দেখানোর জন্য প্রয়োজনীয় ফরম্যাটে পরিবর্তন করে। এছাড়াও মডেল ডেটাবেস থেকে ডেটা নির্বাচন, ইনসার্ট, আপডেট বা ডিলিট করার কাজ করে।

মডেল তৈরি করা

Yii-এ মডেল তৈরি করার জন্য সাধারণত Gii টুল ব্যবহার করা হয়, যা একটি কোড জেনারেটর। তবে আপনি ম্যানুয়ালি মডেল ক্লাসও তৈরি করতে পারেন।

Gii ব্যবহার করে মডেল তৈরি করা:

  1. Gii টুল এক্সেস করা:
    • Gii টুল চালাতে, আপনার Yii অ্যাপ্লিকেশন চালু করুন এবং http://localhost:8080/index.php?r=gii (বা আপনার নির্দিষ্ট URL) এ যান।
  2. মডেল তৈরি করা:
    • Gii মডেল জেনারেটর নির্বাচন করুন।
    • আপনার ডেটাবেস টেবিলের নাম দিন এবং ক্লাস নাম নির্বাচন করুন। উদাহরণস্বরূপ, যদি আপনার ডেটাবেসে user নামক একটি টেবিল থাকে, তবে ক্লাসের নাম হবে User
  3. মডেল ফাইল জেনারেট করা:
    • Gii টুল আপনার মডেল ক্লাস তৈরি করবে, যা ডেটাবেস টেবিলের সাথে সম্পর্কিত হবে।

ম্যানুয়ালি মডেল তৈরি করা:

এছাড়াও আপনি ম্যানুয়ালি মডেল ক্লাস তৈরি করতে পারেন। মডেল ক্লাস সাধারণত yii\db\ActiveRecord ক্লাসের একটি সাবক্লাস হয়। এটি ডেটাবেস টেবিলের সাথে সরাসরি মেলে।

namespace app\models;

use yii\db\ActiveRecord;

class User extends ActiveRecord
{
    public static function tableName()
    {
        return 'user';  // ডেটাবেস টেবিলের নাম
    }

    public function rules()
    {
        return [
            [['username', 'email'], 'required'],  // ভ্যালিডেশন
            ['email', 'email'],                  // ইমেইল ফরম্যাট চেক
        ];
    }
}

এখানে ActiveRecord শ্রেণি ব্যবহার করা হয়েছে যা Yii ফ্রেমওয়ার্কের ডেটাবেস মডেলসের জন্য একটি বেস ক্লাস। এর মাধ্যমে ডেটাবেস টেবিলের প্রতি CRUD (Create, Read, Update, Delete) অপারেশন করা যায়।


২. ডেটাবেস ইন্টিগ্রেশন

Yii ফ্রেমওয়ার্কে ডেটাবেসের সাথে ইন্টিগ্রেশন অত্যন্ত সহজ। Yii 2-এ ডেটাবেস সংযোগ কনফিগারেশন config/db.php ফাইলে করা হয়।

ডেটাবেস সংযোগ কনফিগারেশন

ডেটাবেস কনফিগারেশন করার জন্য প্রথমে config/db.php ফাইলটি খুলুন এবং ডেটাবেসের সংযোগ সেটিংস দিন।

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=mydatabase',  // ডেটাবেসের ডিএসএন
    'username' => 'root',  // ডেটাবেস ইউজারনেম
    'password' => '',  // ডেটাবেস পাসওয়ার্ড
    'charset' => 'utf8',  // ডেটাবেসের ক্যারেক্টার সেট
];
  • dsn: এটি ডেটাবেসের সংযোগ স্ট্রিং, যেমন MySQL, PostgreSQL ইত্যাদির জন্য আলাদা আলাদা সংযোগ স্ট্রিং ব্যবহৃত হয়।
  • username এবং password: ডেটাবেসে লগইন করার জন্য ব্যবহৃত ইউজারনেম এবং পাসওয়ার্ড।
  • charset: ডেটাবেসের চরিত্র সেট, সাধারণত utf8 ব্যবহার করা হয়।

ActiveRecord ব্যবহার করে ডেটাবেস অপারেশন

Create (ইনসার্ট)

$user = new User();
$user->username = 'john_doe';
$user->email = 'john@example.com';
$user->save();  // ডেটাবেসে ডেটা সংরক্ষণ

Read (রিড)

// একটি ইউজার নির্বাচন করা
$user = User::findOne(1);  // ID 1 এর ইউজার নির্বাচন
echo $user->username;

Update (আপডেট)

$user = User::findOne(1);  // ID 1 এর ইউজার নির্বাচন
$user->email = 'new_email@example.com';
$user->save();  // আপডেট করা

Delete (ডিলিট)

$user = User::findOne(1);  // ID 1 এর ইউজার নির্বাচন
$user->delete();  // ইউজার মুছে ফেলা

৩. মডেল এবং ডেটাবেস সম্পর্কিত কিছু গুরুত্বপূর্ণ কনসেপ্ট

রিলেশনশিপস (Relations)

Yii 2-এ আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক তৈরি করতে পারেন, যেমন One-to-Many, Many-to-Many, বা One-to-One সম্পর্ক। উদাহরণস্বরূপ:

class Post extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'post';
    }

    public function getComments()
    {
        return $this->hasMany(Comment::class, ['post_id' => 'id']);
    }
}

এখানে Post মডেল Comment মডেলের সাথে One-to-Many সম্পর্ক তৈরি করেছে। hasMany() মেথড ব্যবহার করে একটি পোস্টের সাথে সম্পর্কিত সমস্ত কমেন্ট পাওয়া যাবে।

স্কোপ (Scopes)

Yii 2-এ মডেল ক্লাসে স্কোপ যুক্ত করা সম্ভব, যা একটি নির্দিষ্ট ধরণের প্রশ্ন (query) পুনরায় ব্যবহার করতে সহায়তা করে। উদাহরণস্বরূপ, সক্রিয় ইউজারদের ফিল্টার করতে একটি স্কোপ তৈরি করা যায়।

class User extends \yii\db\ActiveRecord
{
    public static function active()
    {
        return static::find()->where(['status' => 1]);  // সক্রিয় ইউজারদের রিটার্ন করবে
    }
}

এখানে active() স্কোপ ব্যবহার করে শুধু সক্রিয় ইউজারদের পাওয়া যাবে।


সারাংশ

Yii ফ্রেমওয়ার্কের মডেলস (Models) এবং ডেটাবেস ইন্টিগ্রেশন ব্যবহারের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা খুবই সহজ। ActiveRecord ক্লাস Yii-তে ডেটাবেস টেবিলের সঙ্গে CRUD অপারেশন সম্পাদন করতে ব্যবহৃত হয়। Gii টুল ব্যবহার করে আপনি দ্রুত মডেল তৈরি করতে পারেন এবং ডেটাবেসের সাথে সম্পর্ক স্থাপন করে সহজে ডেটা ম্যানিপুলেশন করতে পারেন। Yii-তে রিলেশনশিপস এবং স্কোপস ব্যবহার করে ডেটাবেস অপারেশন আরও শক্তিশালী এবং কাস্টমাইজেবল করা যায়।

Content added By

Yii ফ্রেমওয়ার্কের Model হলো অ্যাপ্লিকেশনের ডেটা এবং বিজনেস লজিকের প্রতিনিধিত্বকারী একটি গুরুত্বপূর্ণ অংশ। এটি MVC (Model-View-Controller) আর্কিটেকচার অনুযায়ী ডেটা প্রসেসিং এবং ডেটাবেস ইন্টারঅ্যাকশনের জন্য দায়ী। মডেল ডেটাবেস টেবিলের সাথে সম্পর্কিত থাকে এবং ডেটা রিট্রিভাল, সংরক্ষণ, আপডেট বা ডিলিট করার জন্য ব্যবহৃত হয়। Yii ফ্রেমওয়ার্কে মডেল ক্লাস তৈরি করার জন্য বিশেষভাবে ActiveRecord প্যাটার্ন ব্যবহৃত হয়, যা ডেটাবেস টেবিলের সাথে সম্পর্কিত মডেল ক্লাস তৈরি করতে সহায়তা করে।


Model এর ভূমিকা

  1. ডেটাবেস ইন্টারঅ্যাকশন:
    • মডেল ডেটাবেস টেবিলের সঙ্গে সম্পর্ক তৈরি করে এবং ডেটার সাথে যোগাযোগ (রিট্রিভাল, ইনসার্ট, আপডেট, ডিলিট) পরিচালনা করে।
    • ActiveRecord প্যাটার্ন ব্যবহার করে, একটি মডেল ক্লাস একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে, যেখানে প্রতিটি অবজেক্ট একটি টেবিলের রেকর্ডের সাথে সম্পর্কিত।
  2. ডেটা ভ্যালিডেশন:
    • মডেল ডেটার ভ্যালিডেশন এবং স্যানিটাইজেশনের জন্য ব্যবহৃত হয়। যেমন, ব্যবহারকারীর ইনপুট যাচাই করা (যেমন ইমেইল ঠিকানা সঠিকভাবে ফরম্যাট করা)।
    • Yii ফ্রেমওয়ার্কে, মডেল ক্লাসে বিভিন্ন ভ্যালিডেটর ব্যবহার করে ডেটা যাচাই করা হয়।
  3. ব্যবসায়িক লজিক (Business Logic):
    • মডেলটি সাধারণত অ্যাপ্লিকেশনের ব্যবসায়িক লজিক ধারণ করে, যেমন প্রক্রিয়াগুলি পরিচালনা করা, হিসাব-নিকাশ করা ইত্যাদি।
    • মডেল ক্লাসে মেথড এবং প্রপার্টির মাধ্যমে এই লজিক কার্যকর করা হয়।
  4. ডেটা ফরম্যাটিং:
    • মডেল ডেটাকে বিশেষভাবে ফরম্যাট করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, তারিখ এবং সময়ের ফরম্যাটিং বা মূল্য গণনা করা।
  5. অবজেক্ট-রিলেশনাল ম্যাপিং (ORM):
    • ActiveRecord প্যাটার্ন Yii তে ORM এর মত কাজ করে। মডেল ক্লাস ডেটাবেস টেবিলের সঙ্গে একে অপরের সম্পর্ক প্রতিষ্ঠা করে এবং ডেটাবেসের কাজগুলো সহজ করে।

Yii ফ্রেমওয়ার্কে Model তৈরি করা

Yii ফ্রেমওয়ার্কে একটি Model ক্লাস তৈরি করার জন্য সাধারণত Gii জেনারেটর ব্যবহার করা হয়, যা দ্রুত মডেল তৈরি করতে সহায়তা করে। উদাহরণস্বরূপ:

  1. Model ক্লাস তৈরি:

    php yii gii/model --tableName=table_name --modelClass=ModelName
    

    এই কমান্ডটি একটি নতুন মডেল ক্লাস তৈরি করবে যা নির্দিষ্ট টেবিলের সাথে যুক্ত থাকবে।

  2. Model এর ফাংশনালিটি:
    • মডেল ক্লাসে বিভিন্ন ফাংশন থাকতে পারে যেমন:

      class Post extends \yii\db\ActiveRecord
      {
          public static function tableName()
          {
              return 'post';
          }
      
          public function rules()
          {
              return [
                  [['title', 'content'], 'required'],
                  ['email', 'email'],
              ];
          }
      }
      
    • এই ক্লাসে rules() মেথডটি ডেটার ভ্যালিডেশন পরিচালনা করে এবং tableName() মেথডটি ডেটাবেস টেবিলের নাম নির্ধারণ করে।

সারাংশ

Yii ফ্রেমওয়ার্কে Model হলো ডেটাবেস ইন্টারঅ্যাকশন, ভ্যালিডেশন, ব্যবসায়িক লজিক এবং ডেটা ফরম্যাটিংয়ের জন্য প্রধান উপাদান। এটি ডেটাবেস টেবিলের সাথে সংযোগ স্থাপন করে এবং অ্যাপ্লিকেশনটির ডেটা এবং লজিকের মধ্যে মধ্যস্থতা তৈরি করে। ActiveRecord প্যাটার্নের মাধ্যমে Yii মডেল তৈরি করা হয়, যা ডেটাবেসের কাজগুলো সহজ এবং কার্যকরভাবে পরিচালনা করতে সহায়তা করে।

Content added By

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() পদ্ধতি SQL WHERE ক্লজের মতো কাজ করে, যা রেকর্ডের শর্ত নির্ধারণ করতে সাহায্য করে।

৩. ডেটা ইনসার্ট করা (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 এর মাধ্যমে ডেটাবেস অপারেশন আরো শক্তিশালী এবং সহজ হয়। এর কিছু প্রধান সুবিধা হলো:

  1. প্রকৃত SQL কোড কম প্রয়োজন: Active Record ব্যবহার করে, আপনি ডেটাবেসের সাথে কাজ করার জন্য কোনো SQL কোড লিখতে হয় না।
  2. ডেটাবেস অপারেশন সহজ: find(), save(), delete() ইত্যাদি পদ্ধতির মাধ্যমে সহজে ডেটাবেস অপারেশন করা যায়।
  3. সার্বজনীন মডেল: Yii 2 এ Active Record ব্যবহারের মাধ্যমে একটি সাধারণ মডেল ক্লাস একাধিক টেবিলের জন্য ব্যবহৃত হতে পারে।
  4. অ্যাক্সেসযোগ্য: Active Record প্যাটার্ন ব্যবহারে কোডটি আরও পরিষ্কার, সংক্ষিপ্ত এবং সহজে মেইনটেনেবল হয়।

সারাংশ

Yii ফ্রেমওয়ার্কের Active Record Pattern একটি শক্তিশালী ORM প্যাটার্ন, যা ডেটাবেস টেবিলের রেকর্ডগুলোকে ক্লাস অবজেক্ট হিসেবে ব্যবহার করতে সহায়তা করে। এর মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা সহজ হয় এবং SQL কোডের প্রয়োজন কমে যায়। ActiveRecord ক্লাসের মাধ্যমে আপনি ডেটা নির্বাচন, ইনসার্ট, আপডেট এবং ডিলিট করতে পারেন, এবং এটি কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেন্স সহজ করে তোলে।

Content added By

Yii ফ্রেমওয়ার্কের ডেটাবেস কানেকশন সেটআপ এবং কনফিগারেশন একটি গুরুত্বপূর্ণ অংশ, যা ডেটাবেসের সঙ্গে অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন প্রতিষ্ঠা করে। Yii 2-এ ডেটাবেস কানেকশন সাধারণত কনফিগারেশন ফাইলের মাধ্যমে পরিচালিত হয়, যেখানে ডেটাবেসের প্রয়োজনীয় তথ্য যেমন হোস্ট, ইউজারনেম, পাসওয়ার্ড এবং ডাটাবেসের নাম নির্দিষ্ট করা হয়। Yii 3-এও একইভাবে ডেটাবেস কনফিগারেশন করা হয়, তবে সেখানে কিছু নতুন এবং উন্নত কনফিগারেশন পদ্ধতি থাকতে পারে।


Yii 2 ডেটাবেস কানেকশন কনফিগারেশন

Yii 2-এ ডেটাবেস কানেকশন কনফিগারেশন সাধারণত config/db.php ফাইলে রাখা হয়। এখানে ডেটাবেসের বিস্তারিত তথ্য প্রদান করা হয়।

ডেটাবেস কনফিগারেশন উদাহরণ

  1. config/db.php ফাইল তৈরি বা সম্পাদনা করুন:

    <?php
    return [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=mydatabase',  // ডেটাবেসের ডিএনএস
        'username' => 'root',  // ডেটাবেস ইউজারনেম
        'password' => '',  // ডেটাবেস পাসওয়ার্ড
        'charset' => 'utf8',  // ক্যারেক্টার সেট
    ];
    
    • class: ডেটাবেস কানেকশনের জন্য ব্যবহৃত ক্লাস (yii\db\Connection).
    • dsn: ডেটাবেস কানেকশনের জন্য ডেটাবেস সোর্স নাম (DSN). এখানে MySQL উদাহরণ হিসেবে ব্যবহৃত হয়েছে।
    • username: ডেটাবেসের ইউজারনেম.
    • password: ডেটাবেস পাসওয়ার্ড.
    • charset: ডেটাবেসের ক্যারেক্টার সেট।

কনফিগারেশন ফাইল অ্যাড করা

আপনি যদি config/web.php ফাইলে ডেটাবেস কনফিগারেশন অ্যাড করতে চান, তাহলে এই কোডটি যোগ করুন:

'components' => [
    'db' => require __DIR__ . '/db.php',
],

Yii 2 ডেটাবেস কানেকশন ব্যবহার

Yii 2-এ ডেটাবেস কানেকশন ব্যবহার করার জন্য আপনি Yii::$app->db ব্যবহার করতে পারেন। এর মাধ্যমে আপনি মডেল, কুয়েরি, ট্রানজেকশন ইত্যাদি পরিচালনা করতে পারবেন।

ডেটাবেস কুয়েরি উদাহরণ

$command = Yii::$app->db->createCommand('SELECT * FROM post');
$posts = $command->queryAll();

ActiveRecord ব্যবহার করে ডেটা ইনসার্ট করা

Yii 2 এর ActiveRecord প্যাটার্ন ব্যবহার করে ডেটাবেসে ডেটা ইনসার্ট করা:

$post = new \app\models\Post();
$post->title = 'New Post';
$post->content = 'This is the content of the new post.';
$post->save();

Yii 3 ডেটাবেস কানেকশন কনফিগারেশন

Yii 3-এ ডেটাবেস কানেকশন কনফিগারেশন কিছুটা পরিবর্তিত হয়েছে, তবে এর মূল ধারণা একই। Yii 3-এ কনফিগারেশন ফাইলটি config/db.php বা অনুরূপ ফাইলেই রাখা হয়।

Yii 3 কনফিগারেশন উদাহরণ

  1. config/db.php ফাইল তৈরি বা সম্পাদনা করুন:

    <?php
    return [
        'dsn' => 'mysql:host=localhost;dbname=mydatabase',  // ডেটাবেসের ডিএনএস
        'user' => 'root',  // ডেটাবেস ইউজার
        'password' => '',  // পাসওয়ার্ড
    ];
    

ডেটাবেস কনফিগারেশন Yii 3 অ্যাপে অন্তর্ভুক্ত করা

Yii 3-এ কনফিগারেশন অ্যাড করার জন্য Application এর কনফিগারেশনে নিম্নলিখিত কোডটি ব্যবহার করতে হবে:

'components' => [
    'db' => [
        'class' => \Yiisoft\Db\Mysql\Connection::class,
        'dsn' => 'mysql:host=localhost;dbname=mydatabase',
        'user' => 'root',
        'password' => '',
    ],
],

ডেটাবেস কানেকশন সম্পর্কিত কিছু গুরুত্বপূর্ণ বিষয়

  1. ডেটাবেস ট্রানজেকশন: Yii ফ্রেমওয়ার্কে ডেটাবেস ট্রানজেকশন খুবই সহজে ব্যবহার করা যায়। এটি ডেটাবেসের কার্যক্রম গ্রুপ করে এবং সফলভাবে শেষ না হলে সমস্ত পরিবর্তন রিভার্ট করে।

    উদাহরণ:

    $transaction = Yii::$app->db->beginTransaction();
    try {
        // ডেটাবেস অপারেশন
        $post->save();
        $transaction->commit();
    } catch (\Exception $e) {
        $transaction->rollBack();
    }
    
  2. ডেটাবেস কুয়েরি বিল্ডিং: Yii 2 এর yii\db\Query ক্লাসের মাধ্যমে ডেটাবেস কুয়েরি বিল্ড করা যায়, যা SQL কুয়েরি নির্মাণে সাহায্য করে।

    উদাহরণ:

    $posts = (new \yii\db\Query())
        ->select('*')
        ->from('post')
        ->all();
    
  3. ActiveRecord: ActiveRecord প্যাটার্নের মাধ্যমে ডেটাবেস টেবিলের সাথে সম্পর্কিত মডেল তৈরি করে CRUD অপারেশন সম্পাদন করা যায়।

সারাংশ

Yii ফ্রেমওয়ার্কের ডেটাবেস কানেকশন কনফিগারেশন খুবই সোজা এবং শক্তিশালী। Yii 2 ও Yii 3-এ ডেটাবেস কানেকশন সেটআপ করতে ডিএনএস, ইউজারনেম এবং পাসওয়ার্ড সহ কনফিগারেশন ফাইল ব্যবহার করা হয়। আপনি Yii::$app->db এর মাধ্যমে ডেটাবেসের সঙ্গে যোগাযোগ করতে পারবেন এবং ActiveRecord, কুয়েরি বিল্ডার এবং ট্রানজেকশন পরিচালনা করতে পারবেন। Yii 3-এ কিছু নতুন কনফিগারেশন পদ্ধতি রয়েছে, তবে Yii 2 এর মতোই কার্যকরী।

Content added By

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() মেথডের মাধ্যমে ডেটার বিভিন্ন শর্ত ও সীমাবদ্ধতা নির্ধারণ করা যায় এবং কাস্টম ভ্যালিডেশন রুলও সহজেই যোগ করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...