Skill

ডাটাবেস ইন্টিগ্রেশন এবং কুয়েরি বিল্ডার

ফুয়েলপিএইচপি (FuelPHP) - Web Development

300

FuelPHP একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে এবং ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। FuelPHP ডাটাবেস ইন্টিগ্রেশন এবং Query Builder এর মাধ্যমে ডাটাবেসের সাথে কার্যকরভাবে ইন্টারঅ্যাক্ট করতে সহায়ক।

FuelPHP Database Integration

FuelPHP ডাটাবেস ইন্টিগ্রেশন খুবই সহজ এবং শক্তিশালী। এটি বিভিন্ন ডাটাবেস সিস্টেম যেমন MySQL, PostgreSQL, SQLite, ইত্যাদি সমর্থন করে। FuelPHP এ ডাটাবেস ইন্টিগ্রেশনের জন্য ORM এবং Query Builder ব্যবহৃত হয়, যা ডাটাবেসের সাথে ইন্টারঅ্যাকশনকে সহজ এবং কার্যকরী করে তোলে।

1. FuelPHP Database Configuration

FuelPHP এ ডাটাবেস কনফিগার করতে, আপনি app/config/database.php ফাইলে ডাটাবেসের তথ্য প্রদান করেন। নিচে একটি ডাটাবেস কনফিগারেশনের উদাহরণ দেওয়া হলো:

return array(
    'default' => array(
        'type'           => 'mysql', // Database type (mysql, postgresql, etc.)
        'connection'     => array(
            'host'        => 'localhost', // Database host
            'username'    => 'root',      // Database username
            'password'    => '',         // Database password
            'database'    => 'fuelphp_db', // Database name
            'port'        => 3306,       // Database port
        ),
        'charset'        => 'utf8',
        'table_prefix'   => '',         // Table prefix (optional)
        'enable_cache'   => false,      // Enable or disable query caching
    ),
);
  • type: ডাটাবেস সিস্টেমের ধরন (যেমন MySQL, PostgreSQL, SQLite ইত্যাদি)।
  • connection: ডাটাবেসের সংযোগ সম্পর্কিত তথ্য যেমন হোস্ট, ইউজারনেম, পাসওয়ার্ড এবং ডাটাবেস নাম।
  • charset: ডাটাবেসের জন্য ব্যবহৃত চরিত্র সেট।
  • table_prefix: টেবিলের জন্য একটি প্রিফিক্স (যদি প্রয়োজন হয়)।
  • enable_cache: কুয়েরি ক্যাশিং সক্ষম বা অক্ষম করা।

2. Using ORM (Object-Relational Mapping) for Database Interaction

FuelPHP এর ORM (Object-Relational Mapping) সিস্টেম ব্যবহার করে ডাটাবেসের টেবিল এবং কলামগুলিকে ক্লাসের প্রোপার্টি হিসেবে ম্যাপ করা হয়। ORM খুব সহজে CRUD (Create, Read, Update, Delete) অপারেশন করতে সাহায্য করে।

ORM Example:

class Model_User extends \Orm\Model
{
    protected static $_properties = array(
        'id',
        'username',
        'email',
        'password',
    );

    // Relationships
    protected static $_has_many = array(
        'posts' => array(
            'key_from' => 'id',
            'model_to' => 'Model_Post',
            'key_to' => 'user_id',
        ),
    );
}

এখানে, Model_User ক্লাসটি users টেবিলের জন্য একটি ORM মডেল তৈরি করছে। $_properties অ্যারের মধ্যে টেবিলের কলাম নাম উল্লেখ করা হয়েছে।

Saving Data:

$user = Model_User::forge(array(
    'username' => 'john_doe',
    'email'    => 'john@example.com',
    'password' => 'securepassword',
));

$user->save(); // Save the user data to the database

এখানে forge() মেথড ব্যবহার করে একটি নতুন user ইনস্ট্যান্স তৈরি করা হয়েছে এবং পরে save() মেথড দিয়ে ডাটাবেসে সেভ করা হয়েছে।

Reading Data:

$user = Model_User::find(1); // Find user by ID
echo $user->username; // Access username field

এখানে find() মেথড দিয়ে একটি ইউজার রেকর্ড খোঁজা হয়েছে এবং এর প্রপার্টি অ্যাক্সেস করা হয়েছে।

3. Query Builder in FuelPHP

FuelPHP এর Query Builder অত্যন্ত শক্তিশালী এবং ফ্লেক্সিবল একটি টুল যা SQL কুয়েরি তৈরি করতে ব্যবহৃত হয়। এটি ডাটাবেস ইন্টারঅ্যাকশনের জন্য একটি ইন্টারফেস প্রদান করে, যা সরাসরি SQL কোড লিখার প্রয়োজন নেই। Query Builder আপনি সহজেই SELECT, INSERT, UPDATE, DELETE ইত্যাদি SQL অপারেশন করতে পারবেন।

Basic Query Example:

// SELECT query example
$query = DB::select()->from('users')->where('id', '=', 1)->execute();

এখানে, DB::select() এর মাধ্যমে users টেবিল থেকে ডেটা ফেচ করা হয়েছে যেখানে id 1 সমান। execute() মেথড কুয়েরি এক্সিকিউট করে এবং রেজাল্ট রিটার্ন করে।

Insert Example:

// INSERT query example
DB::insert('users')->set(array(
    'username' => 'john_doe',
    'email'    => 'john@example.com',
    'password' => 'securepassword',
))->execute();

এখানে DB::insert() ব্যবহার করে users টেবিলে নতুন ডেটা ইনসার্ট করা হয়েছে।

Update Example:

// UPDATE query example
DB::update('users')->set(array(
    'email' => 'john.doe@example.com',
))->where('id', '=', 1)->execute();

এখানে DB::update() ব্যবহার করে users টেবিলের id = 1 ইউজারের email আপডেট করা হয়েছে।

Delete Example:

// DELETE query example
DB::delete('users')->where('id', '=', 1)->execute();

এখানে DB::delete() ব্যবহার করে id = 1 ইউজারকে users টেবিল থেকে মুছে ফেলা হয়েছে।

4. Query Builder Filters

FuelPHP এর Query Builder আপনাকে কুয়েরি ফিল্টার করার জন্য বিভিন্ন অপশন প্রদান করে, যেমন where, or_where, like, order_by, limit, ইত্যাদি। এই অপশনগুলি ব্যবহার করে আপনি আপনার কুয়েরিকে আরও কাস্টমাইজড এবং ফিল্টার করা কুয়েরি তৈরি করতে পারেন।

Where Clause Example:

$query = DB::select()->from('users')->where('email', 'LIKE', '%@example.com%')->execute();

এখানে, where ক্লজ ব্যবহার করে email কলামে @example.com থাকা সমস্ত ইউজার ফেচ করা হয়েছে।

Order By Example:

$query = DB::select()->from('users')->order_by('username', 'asc')->execute();

এখানে, order_by ক্লজ ব্যবহার করে username কলামের ভিত্তিতে আর্ডার করা হয়েছে।

Limit Example:

$query = DB::select()->from('users')->limit(5)->execute();

এখানে, limit ক্লজ ব্যবহার করে ৫টি রেকর্ড সীমাবদ্ধ করা হয়েছে।


5. Combining ORM and Query Builder

FuelPHP ORM এবং Query Builder একে অপরের সাথে একত্রে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি ORM মডেল ব্যবহার করে ডেটা ফেচ করতে পারেন এবং Query Builder ব্যবহার করে আরও জটিল কুয়েরি তৈরি করতে পারেন।

// Using ORM with Query Builder
$user = Model_User::query()->where('username', '=', 'john_doe')->get();

এখানে, Model_User::query() ব্যবহার করে username কে ফিল্টার করে ডেটা ফেচ করা হয়েছে।


FuelPHP ডাটাবেস ইন্টিগ্রেশন এবং কুয়েরি বিল্ডিং খুবই সহজ এবং শক্তিশালী। ORM ব্যবহারে ডাটাবেসের সাথে যোগাযোগ এবং CRUD অপারেশনগুলি সহজে করা সম্ভব, এবং Query Builder SQL কুয়েরি তৈরি এবং চালানোর জন্য খুবই সুবিধাজনক। আপনি যখন FuelPHP ব্যবহার করবেন, তখন Data Validation, Filtering, CRUD Operations, এবং Advanced Querying এই সকল ফিচারের মাধ্যমে আপনার অ্যাপ্লিকেশনের ডাটাবেস ইন্টারঅ্যাকশনকে আরও কার্যকর এবং ফ্লেক্সিবল করে তুলতে পারবেন।

Content added By

FuelPHP একটি শক্তিশালী এবং নমনীয় PHP ফ্রেমওয়ার্ক, যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। FuelPHP-তে ডাটাবেস কনফিগারেশন অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি আপনাকে আপনার অ্যাপ্লিকেশন এবং ডাটাবেসের মধ্যে সম্পর্ক স্থাপন করতে সহায়তা করে। FuelPHP তে ডাটাবেস কনফিগারেশন সম্পাদন করা খুবই সহজ এবং সরল, এবং এটি ORM (Object-Relational Mapping) এর মাধ্যমে ডাটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করতে সহায়তা করে।

এখানে FuelPHP এর ডাটাবেস কনফিগারেশন কিভাবে সেট আপ করবেন এবং ORM ব্যবহার করবেন, তা বিস্তারিতভাবে আলোচনা করা হয়েছে।

FuelPHP এর ডাটাবেস কনফিগারেশন:

FuelPHP তে ডাটাবেস কনফিগারেশন প্রধানত app/config/db.php ফাইলে রাখা হয়। এই ফাইলটি আপনার ডাটাবেসের সংযোগ এবং অন্যান্য সেটিংস পরিচালনা করে।

1. ডাটাবেস কনফিগারেশন ফাইল:

FuelPHP তে ডাটাবেস কনফিগারেশন করার জন্য প্রথমে app/config/db.php ফাইলটি সম্পাদনা করতে হয়।

উদাহরণ: app/config/db.php

return array(
    'default' => array(
        'type'           => 'mysql',  // ডাটাবেস টাইপ, যেমন mysql, pgsql, sqlite ইত্যাদি
        'connection'     => array(
            'host'        => 'localhost',  // ডাটাবেস সার্ভারের হোস্ট
            'username'    => 'root',       // ইউজারনেম
            'password'    => '',           // পাসওয়ার্ড
            'database'    => 'fuelphp_db', // ডাটাবেস নাম
            'port'        => 3306,         // পোর্ট (যেমন: MySQL এর জন্য 3306)
        ),
        'table_prefix'   => '',           // টেবিলের প্রিফিক্স (যদি থাকে)
        'charset'        => 'utf8',       // ক্যারেক্টার সেটিং
        'enable_profiling' => false,      // প্রোফাইলিং চালু/বন্ধ
    ),
);

এখানে:

  • type: এখানে আপনি ডাটাবেস সিস্টেম নির্বাচন করবেন যেমন mysql, pgsql, sqlite ইত্যাদি।
  • connection: এটি আপনার ডাটাবেসের হোস্ট, ইউজারনেম, পাসওয়ার্ড এবং ডাটাবেসের নাম নির্ধারণ করে।
  • table_prefix: টেবিলের নামের পূর্বে প্রিফিক্স যোগ করতে চাইলে এখানে সেট করা যাবে।
  • charset: ডাটাবেসের ক্যারেক্টার সেট, সাধারণত utf8 সঠিক থাকে।
  • enable_profiling: এটি FuelPHP তে ডাটাবেস কোয়েরি প্রোফাইলিং সক্ষম/অক্ষম করতে ব্যবহৃত হয়।

2. Multiple Database Connections (বহু ডাটাবেস সংযোগ):

FuelPHP আপনাকে একাধিক ডাটাবেসের সাথে সংযোগ স্থাপন করার সুবিধা দেয়। যদি আপনি একাধিক ডাটাবেসে কাজ করতে চান তবে, আপনি একাধিক সংযোগ কনফিগার করতে পারেন।

উদাহরণ:

return array(
    'default' => array(
        'type'           => 'mysql',
        'connection'     => array(
            'host'        => 'localhost',
            'username'    => 'root',
            'password'    => '',
            'database'    => 'fuelphp_db',
            'port'        => 3306,
        ),
    ),
    'secondary' => array(   // দ্বিতীয় ডাটাবেস সংযোগ
        'type'           => 'pgsql',
        'connection'     => array(
            'host'        => 'localhost',
            'username'    => 'postgres',
            'password'    => '',
            'database'    => 'secondary_db',
            'port'        => 5432,
        ),
    ),
);

এখানে secondary নামে একটি অতিরিক্ত ডাটাবেস সংযোগ তৈরি করা হয়েছে, যেখানে PostgreSQL ডাটাবেস ব্যবহার করা হয়েছে।

3. FuelPHP ORM (Object-Relational Mapping):

FuelPHP তে ডাটাবেসের সাথে যোগাযোগ করার জন্য ORM ব্যবহৃত হয়, যা ডাটাবেস টেবিল এবং Model এর মধ্যে সম্পর্ক স্থাপন করে। ORM ক্লাসের মাধ্যমে আপনি ডাটাবেস থেকে ডেটা বের করতে, তৈরি করতে এবং সংশোধন করতে পারবেন।

ORM মডেল তৈরি:

FuelPHP তে ORM মডেল তৈরি করতে আপনাকে একটি মডেল ক্লাস তৈরি করতে হবে, যা FuelPHP এর Orm\Model ক্লাস থেকে এক্সটেন্ড করবে। এই মডেলটি ডাটাবেস টেবিলের সাথে সম্পর্কিত থাকবে।

উদাহরণ: app/classes/model/user.php

class Model_User extends Orm\Model
{
    protected static $_properties = array(
        'id',
        'username',
        'email',
        'created_at',
        'updated_at',
    );

    protected static $_table_name = 'users';  // টেবিলের নাম

    protected static $_primary_key = array('id');  // প্রাইমারি কী

    // ডাটাবেস ইন্সার্টের আগে টাইমস্ট্যাম্প সেট করা
    protected static $_created_at = 'created_at';
    protected static $_updated_at = 'updated_at';
}

এখানে:

  • $_properties: টেবিলের কলাম নামগুলো এখানে উল্লেখ করা হয়।
  • $_table_name: ডাটাবেস টেবিলের নাম নির্ধারণ করা হয়।
  • $_primary_key: টেবিলের প্রাইমারি কী নির্ধারণ করা হয়।
ORM এর মাধ্যমে ডেটা ইনসার্ট এবং ফেচ করা:

ORM মডেল ব্যবহার করে FuelPHP তে ডেটা ইনসার্ট এবং ফেচ করার উদাহরণ:

// নতুন ইউজার তৈরি করা
$user = Model_User::forge(array(
    'username' => 'john_doe',
    'email' => 'john@example.com',
));

$user->save();  // ডাটাবেসে সেভ করা

// ইউজার ডেটা ফেচ করা
$user = Model_User::find(1);  // আইডি 1 এর ইউজার ফেচ করা

echo $user->username;  // 'john_doe'

এখানে:

  • forge(): মডেল ইনস্ট্যান্স তৈরি করার জন্য ব্যবহৃত হয়।
  • save(): ডাটাবেসে ডেটা ইনসার্ট বা আপডেট করা হয়।
  • find(): ডাটাবেস থেকে নির্দিষ্ট রেকর্ড ফেচ করা হয়।

4. Query Builder এর মাধ্যমে ডেটাবেস অপারেশন:

FuelPHP তে Query Builder ব্যবহৃত হয় ডাটাবেসের সাথে জটিল কোয়েরি পরিচালনা করার জন্য। এটি SQL কোডকে সহজ এবং নিরাপদভাবে জেনারেট করতে সহায়তা করে।

উদাহরণ:

$query = DB::select()->from('users')->where('id', '=', 1);
$user = $query->execute();

এখানে:

  • DB::select(): ডাটাবেস থেকে সিলেক্ট কোয়েরি তৈরি করা।
  • from(): টেবিল নাম নির্ধারণ করা।
  • where(): কন্ডিশন যোগ করা।

5. Transaction Management:

FuelPHP তে ডাটাবেস ট্রানজ্যাকশন পরিচালনা করা যায়, যা ডেটা অটোমেটিকভাবে রোলব্যাক বা কমিট করার সুবিধা দেয়।

উদাহরণ:

DB::start_transaction();

try {
    // ডাটাবেস অপারেশন
    DB::insert('users')->set(array('username' => 'alice', 'email' => 'alice@example.com'))->execute();

    // ট্রানজ্যাকশন কমিট করা
    DB::commit_transaction();
} catch (Exception $e) {
    // এক্সেপশন হ্যান্ডেলিং
    DB::rollback_transaction();
}

এখানে:

  • DB::start_transaction(): ট্রানজ্যাকশন শুরু করা।
  • DB::commit_transaction(): সফলভাবে ট্রানজ্যাকশন কমিট করা।
  • DB::rollback_transaction(): কোনো ত্রুটির ক্ষেত্রে ট্রানজ্যাকশন রোলব্যাক করা।

সারাংশ:

  • FuelPHP তে ডাটাবেস কনফিগারেশন এবং ব্যবস্থাপনা খুবই সহজ এবং শক্তিশালী।
  • ORM ব্যবহার করে আপনি Model ক্লাস তৈরি করতে পারেন, যা ডাটাবেস টেবিলের সাথে সম্পর্ক স্থাপন করে এবং ডেটা ইনসার্ট/ফেচ করার সুবিধা দেয়।
  • Query Builder এর মাধ্যমে জটিল SQL কোয়েরি তৈরি করা সহজ হয়।
  • Transaction Management এর মাধ্যমে ডাটাবেস অপারেশনগুলোকে নিরাপদভাবে পরিচালনা করা যায়।
  • Validation এবং Filtering ফিচার ব্যবহার করে ফর্ম ইনপুট এবং ডেটা নিরাপদভাবে যাচাই ও সঠিক করা যায়।

FuelPHP তে ডাটাবেস কনফিগারেশন, ORM এবং Query Builder ব্যবহার করে আপনি খুব সহজেই শক্তিশালী এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By

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

Query Builder FuelPHP তে একটি শক্তিশালী ফিচার, যা আপনাকে SQL কুয়েরি লেখার পরিবর্তে পিএইচপি কোড ব্যবহার করে ডাটাবেস অপারেশন পরিচালনা করতে সাহায্য করে। এটি MySQL, PostgreSQL, এবং SQLite এর মত ডাটাবেস সমর্থন করে এবং বিভিন্ন কুয়েরি অপারেশন যেমন SELECT, INSERT, UPDATE, DELETE ইত্যাদি সহজে তৈরি করতে ব্যবহৃত হয়।

FuelPHP Query Builder ব্যবহার করে Database Queries তৈরি

1. Query Builder এর প্রাথমিক ব্যবহার

FuelPHP এর Query Builder ক্লাসটি মূলত DB ক্লাসের মাধ্যমে ব্যবহার করা হয়। আপনি এটি ব্যবহার করে SELECT, INSERT, UPDATE, DELETE কুয়েরি তৈরি এবং ডাটাবেসে প্রয়োগ করতে পারবেন।

2. SELECT Query তৈরি করা

SELECT কুয়েরি তৈরি করতে Query Builder এর from(), where(), order_by(), limit() ইত্যাদি মেথড ব্যবহার করা হয়।

// SELECT Query Example
$query = DB::select('id', 'name', 'email')  // নির্বাচিত কলামসমূহ
    ->from('users')                         // যেই টেবিল থেকে ডেটা আনতে হবে
    ->where('status', '=', 'active')         // কন্ডিশন
    ->order_by('name', 'asc')                // অর্ডারিং
    ->limit(10)                              // সীমিত রেজাল্ট
    ->execute();                             // কুয়েরি এক্সিকিউট

// ডেটা ফলাফল
foreach ($query as $row) {
    echo $row['id'] . ' - ' . $row['name'] . '<br>';
}

এখানে:

  • DB::select() দিয়ে কুয়েরি শুরু করা হয়, যেখানে আপনি যে কলামগুলো নির্বাচন করতে চান তা উল্লেখ করবেন।
  • from() মেথড দিয়ে টেবিল নির্ধারণ করা হয়।
  • where() মেথড দিয়ে ফিল্টার/কন্ডিশন যোগ করা হয়।
  • order_by() দিয়ে রেজাল্ট অর্ডার করা হয়।
  • limit() দিয়ে সীমিত সংখ্যক রেজাল্ট ফেরত পাওয়ার জন্য সীমা নির্ধারণ করা হয়।

3. INSERT Query তৈরি করা

FuelPHP এর Query Builder ব্যবহার করে ডাটাবেসে ডেটা ইনসার্ট করা খুবই সহজ। insert() মেথড ব্যবহার করা হয় নতুন রেকর্ড ডাটাবেসে যুক্ত করতে।

// INSERT Query Example
$data = array(
    'name'   => 'John Doe',
    'email'  => 'john.doe@example.com',
    'status' => 'active'
);

DB::insert('users')->set($data)->execute();

এখানে:

  • DB::insert() দিয়ে ইনসার্ট কুয়েরি শুরু করা হয়।
  • set($data) এর মাধ্যমে ইনপুট ডেটা অ্যারে হিসেবে পাস করা হয়।
  • execute() মেথডটি কুয়েরি এক্সিকিউট করে ডেটাবেসে রেকর্ড যুক্ত করবে।

4. UPDATE Query তৈরি করা

ডাটাবেসে বিদ্যমান রেকর্ড আপডেট করার জন্য Query Builder এর update() এবং set() মেথড ব্যবহার করা হয়।

// UPDATE Query Example
$data = array(
    'status' => 'inactive'
);

DB::update('users')
    ->set($data)                             // আপডেট হওয়া ডেটা
    ->where('id', '=', 1)                    // কন্ডিশন
    ->execute();                             // কুয়েরি এক্সিকিউট

এখানে:

  • DB::update() দিয়ে আপডেট কুয়েরি শুরু করা হয়।
  • set($data) এর মাধ্যমে আপডেট হওয়া ডেটা অ্যারে হিসেবে পাস করা হয়।
  • where() মেথড দিয়ে কন্ডিশন দেয়া হয়, যে রেকর্ডটি আপডেট করা হবে।
  • execute() কুয়েরি এক্সিকিউট করে রেকর্ডটি আপডেট করবে।

5. DELETE Query তৈরি করা

ডাটাবেস থেকে রেকর্ড মুছে ফেলার জন্য Query Builder এর delete() মেথড ব্যবহার করা হয়।

// DELETE Query Example
DB::delete('users')
    ->where('id', '=', 1)        // কন্ডিশন
    ->execute();                 // কুয়েরি এক্সিকিউট

এখানে:

  • DB::delete() দিয়ে ডিলিট কুয়েরি শুরু করা হয়।
  • where() মেথড দিয়ে কন্ডিশন দেয়া হয়, যে রেকর্ডটি মুছে ফেলা হবে।
  • execute() কুয়েরি এক্সিকিউট করে ডাটাবেস থেকে রেকর্ডটি মুছে ফেলবে।

6. Query Builder তে JOIN ব্যবহার করা

JOIN কুয়েরি তৈরি করার জন্য FuelPHP এর Query Builderjoin() মেথড ব্যবহার করা হয়। এটি দুটি টেবিলের ডেটা একত্রে আনার জন্য ব্যবহার করা হয়।

// JOIN Query Example
$query = DB::select('users.id', 'users.name', 'orders.total')
    ->from('users')
    ->join('orders', 'INNER')->on('users.id', '=', 'orders.user_id')  // JOIN
    ->where('users.status', '=', 'active')
    ->execute();

foreach ($query as $row) {
    echo $row['name'] . ' - ' . $row['total'] . '<br>';
}

এখানে:

  • join('orders', 'INNER')->on('users.id', '=', 'orders.user_id'): এটি users টেবিলের সাথে orders টেবিলের মধ্যে একটি INNER JOIN তৈরি করে।
  • select() এর মাধ্যমে আপনি একাধিক টেবিলের কলাম সিলেক্ট করতে পারেন।

7. FuelPHP Query Builder কাস্টম SQL ব্যবহার

আপনি যদি FuelPHP এর Query Builder দিয়ে কোনো কাস্টম SQL কুয়েরি লিখতে চান তবে DB::query() মেথড ব্যবহার করতে পারেন।

// Custom SQL Query Example
$query = DB::query("SELECT * FROM users WHERE status = 'active' LIMIT 10")->execute();

foreach ($query as $row) {
    echo $row['name'] . ' - ' . $row['email'] . '<br>';
}

এখানে:

  • DB::query() ব্যবহার করে আপনি কাস্টম SQL কুয়েরি করতে পারেন।

FuelPHP এর Query Builder একটি খুবই শক্তিশালী এবং সহজে ব্যবহারযোগ্য টুল যা আপনাকে SELECT, INSERT, UPDATE, DELETE, এবং JOIN সহ অন্যান্য SQL অপারেশন সহজে করতে সাহায্য করে। এটি PHP কোডের মাধ্যমে ডেটাবেস কুয়েরি তৈরি করার একটি পরিষ্কার এবং কার্যকরী পদ্ধতি প্রদান করে, যা কোডকে আরও রিডেবল এবং ম্যানেজেবল করে তোলে।

Content added By

FuelPHP একটি আধুনিক এবং শক্তিশালী PHP ফ্রেমওয়ার্ক, যা ওয়েব ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি ORM (Object-Relational Mapping) সমর্থন করে, যা ডেটাবেস পরিচালনা এবং ডেটা ম্যানিপুলেশনের জন্য সহজ এবং দক্ষ উপায় প্রদান করে। FuelPHP এর ORM পদ্ধতি ব্যবহার করে সহজ এবং জটিল SQL Queries তৈরি করা সম্ভব, এবং Joins সমর্থনও রয়েছে।

এখানে FuelPHP-এর মাধ্যমে Simple Queries, Complex Queries, এবং Joins সম্পর্কে বিস্তারিত আলোচনা করা হলো।

1. Simple Queries in FuelPHP (ORM)

Simple Queries হল এমন সহজ SQL কোয়েরি, যা সাধারণত একটি টেবিল থেকে ডেটা নির্বাচন, ইনসার্ট, আপডেট বা ডিলিট করতে ব্যবহৃত হয়। FuelPHP ORM এই কোয়েরিগুলি সহজভাবে ব্যবহার করার সুযোগ দেয়, যেখানে আপনি ডেটাবেস টেবিলের সাথে সরাসরি ইন্টারঅ্যাক্ট না করেও ডেটা ম্যানিপুলেট করতে পারেন।

Simple Query Example (Select):

FuelPHP-তে একটি টেবিলের ডেটা নির্বাচন করার জন্য ORM ব্যবহার করা যায়। এখানে একটি সহজ সিলেক্ট কোয়েরি দেখানো হয়েছে:

// Model: User.php
class Model_User extends Orm\Model
{
    protected static $_table_name = 'users';  // Table name
    protected static $_primary_key = 'id';   // Primary key
}

// Controller Example:
public function action_index()
{
    // Select all users
    $users = Model_User::find('all');

    // Display users
    foreach ($users as $user) {
        echo $user->username . ' - ' . $user->email . '<br>';
    }
}

এখানে:

  • Model_User::find('all'): এটি users টেবিলের সমস্ত রেকর্ড নির্বাচন করে।
  • $user->username এবং $user->email: এটি ORM ব্যবহার করে ডেটাবেসের কলামগুলির মান গ্রহণ করছে।

Simple Query Example (Insert):

FuelPHP-তে ডেটা ইনসার্ট করতে ORM ব্যবহার করা হয়।

$user = Model_User::forge(array(
    'username' => 'john_doe',
    'email'    => 'john.doe@example.com',
    'password' => Hash::make('password123'),
));

$user->save();  // Save the new user

এখানে:

  • Model_User::forge(): একটি নতুন ইউজার তৈরি করছে।
  • $user->save(): নতুন ইউজারকে ডেটাবেসে ইনসার্ট করছে।

Simple Query Example (Update):

FuelPHP ORM ব্যবহার করে ডেটা আপডেট করা খুবই সহজ:

$user = Model_User::find(1);  // Find user with ID 1
$user->email = 'newemail@example.com';  // Update email
$user->save();  // Save changes

এখানে:

  • Model_User::find(1): users টেবিল থেকে আইডি 1-এর ইউজারটিকে নির্বাচন করছে।
  • $user->save(): আপডেট করা ইউজারকে ডেটাবেসে সেভ করছে।

2. Complex Queries in FuelPHP (ORM)

Complex Queries হল এমন SQL কোয়েরি যা একাধিক শর্ত, গ্রুপিং, অর্ডারিং বা লিমিটেশন অন্তর্ভুক্ত করে। FuelPHP ORM ব্যবহার করে এই ধরনের কোয়েরি করা সম্ভব।

Complex Query Example (Where conditions and ordering):

$users = Model_User::find('all', array(
    'where' => array(
        array('status', '=', 'active'),
        array('age', '>=', 18),
    ),
    'order_by' => array('username' => 'asc'),
    'limit' => 10,
));

foreach ($users as $user) {
    echo $user->username . ' - ' . $user->email . '<br>';
}

এখানে:

  • where: একটি বা একাধিক শর্ত যোগ করা হয়েছে (যেমন, status = 'active' এবং age >= 18)।
  • order_by: আউটপুটকে একটি নির্দিষ্ট কলাম (যেমন username) দ্বারা সাজানো হয়েছে।
  • limit: আউটপুটের সংখ্যা সীমিত করা হয়েছে (এখানে ১০টি ইউজার দেখানো হবে)।

Complex Query Example (Distinct, Group By, and Having):

$users = DB::select(DB::expr('DISTINCT(username)'))
    ->from('users')
    ->where('status', '=', 'active')
    ->group_by('username')
    ->having('count(username)', '>', 1)
    ->execute();

foreach ($users as $user) {
    echo $user['username'] . '<br>';
}

এখানে:

  • DISTINCT: ভিন্ন ইউজারনেম নির্বাচন করছে।
  • group_by: username অনুসারে গ্রুপ করছে।
  • having: গ্রুপের মধ্যে কিছু শর্ত যোগ করা হয়েছে (যেমন, ইউজারনেমের সংখ্যা ১-এর বেশি হতে হবে)।

3. Joins in FuelPHP (ORM)

Joins হল SQL কোয়েরি ব্যবহারের একটি পদ্ধতি, যা একাধিক টেবিলের ডেটাকে একত্রিত করে। FuelPHP ORM সাপোর্ট করে INNER JOIN, LEFT JOIN, RIGHT JOIN, ইত্যাদি।

Join Example (Inner Join):

$users = DB::select('users.username', 'posts.title')
    ->from('users')
    ->join('posts')->on('users.id', '=', 'posts.user_id')
    ->where('posts.status', '=', 'published')
    ->execute();

foreach ($users as $user) {
    echo $user['username'] . ' - ' . $user['title'] . '<br>';
}

এখানে:

  • join('posts')->on('users.id', '=', 'posts.user_id'): এটি users এবং posts টেবিলগুলিকে user_id দিয়ে INNER JOIN করছে।
  • where('posts.status', '=', 'published'): শুধুমাত্র প্রকাশিত পোষ্টের তথ্য দেখানো হচ্ছে।

Join Example (Left Join):

$users = DB::select('users.username', 'comments.comment_text')
    ->from('users')
    ->join('comments', 'LEFT')->on('users.id', '=', 'comments.user_id')
    ->execute();

foreach ($users as $user) {
    echo $user['username'] . ' - ' . $user['comment_text'] . '<br>';
}

এখানে:

  • join('comments', 'LEFT'): users টেবিলের সাথে LEFT JOIN হচ্ছে, যার মাধ্যমে এমন ইউজারগুলোও আনা হবে যাদের কমেন্ট না থাকলেও।
  • comments.comment_text: এই কলামে ইউজারের কমেন্টের টেক্সট প্রদর্শিত হবে।

Join Example (Multiple Joins):

$results = DB::select('users.username', 'posts.title', 'comments.comment_text')
    ->from('users')
    ->join('posts')->on('users.id', '=', 'posts.user_id')
    ->join('comments')->on('posts.id', '=', 'comments.post_id')
    ->where('comments.status', '=', 'approved')
    ->execute();

foreach ($results as $result) {
    echo $result['username'] . ' - ' . $result['title'] . ' - ' . $result['comment_text'] . '<br>';
}

এখানে:

  • join('posts')->on('users.id', '=', 'posts.user_id'): users এবং posts টেবিলের মধ্যে INNER JOIN হচ্ছে।
  • join('comments')->on('posts.id', '=', 'comments.post_id'): posts এবং comments টেবিলের মধ্যে INNER JOIN হচ্ছে।
  • comments.status = 'approved': শুধুমাত্র অনুমোদিত কমেন্টগুলো রিটার্ন করা হচ্ছে।

সারাংশ:

  • Simple Queries: FuelPHP ORM ব্যবহার করে সহজ SQL কোয়েরি করা যায়, যেমন find(), save(), delete(), ইত্যাদি।
  • Complex Queries: FuelPHP-তে where, order_by, group_by, having ইত্যাদি ফিচারের মাধ্যমে জটিল কোয়েরি তৈরি করা সম্ভব।
  • Joins: FuelPHP ORM-এ INNER JOIN, LEFT JOIN, RIGHT JOIN সহ বিভিন্ন ধরনের JOIN ব্যবহার করা যেতে পারে।

FuelPHP ORM কোয়েরিগুলি ব্যবহার করে আপনি সহজভাবে ডেটাবেসের টেবিলগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারেন, এবং প্রয়োজনে জটিল কুয়েরি তৈরি করতে পারেন। ORM এর মাধ্যমে FuelPHP কোডিংকে আরও সহজ, কার্যকরী, এবং রিডেবল বানায়।

Content added By

FuelPHP একটি জনপ্রিয় PHP ফ্রেমওয়ার্ক, যা MVC (Model-View-Controller) আর্কিটেকচারে ভিত্তি করে তৈরি এবং এতে বিভিন্ন ধরনের কার্যকারিতা এবং কাস্টম লজিক তৈরির সুবিধা রয়েছে। Pagination (পাতা বিভাজন) এবং Sorting (সাজানো) ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে খুবই সাধারণ এবং প্রয়োজনীয় ফিচার। FuelPHP তে Pagination এবং Sorting কাস্টম লজিক তৈরি করা খুবই সহজ এবং এতে কার্যকরী কোড লেখা সম্ভব।

এখানে Pagination এবং Sorting এর জন্য কাস্টম লজিক তৈরির জন্য একটি সাধারণ গাইডলাইন দেওয়া হলো।


1. Pagination in FuelPHP

Pagination হলো একটি প্রক্রিয়া যেখানে বড় ডেটাসেটকে ছোট অংশে ভাগ করা হয় এবং ব্যবহারকারীরা একে একে পেজে ডেটা দেখতে পারেন। FuelPHP তে pagination খুবই সহজ এবং এতে Pagination ক্লাস ব্যবহার করা হয়।

Pagination Setup Example in FuelPHP:

  1. Controller: পেজিনেশন সেটআপ করা।
// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,  // Number of items per page
            'total_items' => Model_Product::count_all(),  // Total items in the table
            'uri_segment' => 3,  // URL segment for page number
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch the products for current page
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
        ));

        // Pass products and pagination to the view
        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination
        ]);
    }
}
  1. View: পেজিনেশন এবং প্রোডাক্টের তালিকা দেখানো।
// fuel/app/views/product/index.php
<h1>Product List</h1>
<ul>
    <?php foreach ($products as $product): ?>
        <li><?php echo $product->name; ?> - <?php echo $product->price; ?></li>
    <?php endforeach; ?>
</ul>

<!-- Pagination -->
<?php echo $pagination->render(); ?>

এখানে:

  • Pagination ক্লাসকে ব্যবহার করে ডেটার পেজিনেশন কনফিগার করা হয়েছে।
  • Pagination::forge() এর মাধ্যমে পেজিনেশন সেটআপ করা হয়েছে এবং limit এবং offset ব্যবহার করে ডেটা লোড করা হয়েছে।
  • render() মেথডের মাধ্যমে পেজিনেশন কন্ট্রোল দেখানো হচ্ছে।

2. Sorting in FuelPHP

Sorting হল একটি প্রক্রিয়া যেখানে আপনি ডেটাকে একটি নির্দিষ্ট কন্ডিশনে সাজান, যেমন নাম, তারিখ, প্রাইস ইত্যাদি অনুসারে। FuelPHP তে সোজা SQL কোয়েরি বা ORM ব্যবহার করে ডেটা সাজানো যায়।

Sorting Setup Example in FuelPHP:

  1. Controller: Sorting লজিক সেটআপ করা।
// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Sorting parameter
        $sort_by = Input::get('sort', 'name');  // Default to sorting by 'name'
        $sort_order = Input::get('order', 'asc');  // Default to ascending order

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,  // Number of items per page
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch products with sorting
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
            'order_by' => array($sort_by => $sort_order),  // Sorting applied
        ));

        // Pass products, pagination, and sorting info to the view
        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}
  1. View: Sorting এবং পেজিনেশন নিয়ন্ত্রণ।
// fuel/app/views/product/index.php
<h1>Product List</h1>

<!-- Sorting links -->
<a href="?sort=name&order=<?php echo ($sort_order == 'asc' ? 'desc' : 'asc'); ?>">Sort by Name</a> |
<a href="?sort=price&order=<?php echo ($sort_order == 'asc' ? 'desc' : 'asc'); ?>">Sort by Price</a>

<ul>
    <?php foreach ($products as $product): ?>
        <li><?php echo $product->name; ?> - <?php echo $product->price; ?></li>
    <?php endforeach; ?>
</ul>

<!-- Pagination -->
<?php echo $pagination->render(); ?>

এখানে:

  • Sorting লজিককে Input::get() এর মাধ্যমে গ্রহণ করা হয়েছে যাতে ব্যবহারকারী কোন কলামে ডেটা সাজাতে চায় তা নির্ধারণ করা যায়।
  • SQL এর ORDER BY ক্লজ ব্যবহার করে ডেটা সাজানো হচ্ছে, যেখানে sort_by এবং sort_order ভ্যারিয়েবল ব্যবহার করা হয়েছে।
  • ভিউতে সোর্টিং এর জন্য লিঙ্ক তৈরি করা হয়েছে যা পেজ রিফ্রেশের সময় ডেটা সোর্ট করবে।

3. Pagination এবং Sorting একসাথে ব্যবহারের উদাহরণ

ধরা যাক, আপনি পেজিনেশন এবং সটিং উভয়ই একসাথে ব্যবহার করতে চান:

// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Sorting parameter
        $sort_by = Input::get('sort', 'name');
        $sort_order = Input::get('order', 'asc');

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch products with sorting and pagination
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
            'order_by' => array($sort_by => $sort_order),
        ));

        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}

এখানে:

  • পেজিনেশন এবং সটিং একসাথে কাজ করছে এবং ব্যবহারকারীকে পেজ এবং সটিং উভয়ের জন্য কন্ট্রোল দেওয়া হচ্ছে।

4. FuelPHP তে Custom Pagination and Sorting লজিক

আপনি যদি Pagination এবং Sorting এর জন্য কাস্টম লজিক তৈরি করতে চান, আপনি একটি কাস্টম কুইরি তৈরি করতে পারেন যা আপনার নির্দিষ্ট প্রয়োজন অনুসারে কাজ করবে। উদাহরণস্বরূপ, আপনি যদি ডেটার উপর বিশেষ ধরনের ফিল্টারিং এবং সাজানো প্রক্রিয়া করতে চান তবে আপনার কুইরি লজিক কাস্টমাইজ করতে পারেন।

Custom Query Example:

// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Custom filters
        $search_term = Input::get('search', '');

        // Sorting parameter
        $sort_by = Input::get('sort', 'name');
        $sort_order = Input::get('order', 'asc');

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        $pagination = Pagination::forge('mypagination', $config);

        // Custom Query with Filtering, Sorting, and Pagination
        $products = DB::select('*')
            ->from('products')
            ->like('name', '%' . $search_term . '%')  // Filtering
            ->order_by($sort_by, $sort_order)         // Sorting
            ->limit($pagination->per_page)
            ->offset($pagination->offset)
            ->execute();

        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}

এখানে:

  • Custom filtering: like() দিয়ে ডেটার উপর ফিল্টারিং করা হয়েছে।
  • Custom sorting: order_by() দিয়ে কাস্টম সাজানো হয়েছে।
  • Pagination: পেজিনেশন লজিক একইভাবে কাজ করছে।

সারাংশ:

FuelPHP তে Pagination এবং Sorting খুবই সহজ এবং শক্তিশালী। আপনি Pagination::forge() এবং order_by() ব্যবহার করে সহজেই পেজিনেশন এবং সাজানো লজিক বাস্তবায়ন করতে পারেন। FuelPHP আপনাকে কাস্টম পেজিনেশন এবং সাজানোর জন্য কুইরি তৈরি করার সুবিধা প্রদান করে, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ডেটা সহজেই ফিল্টার এবং সাজাতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...