Model তৈরি এবং ব্যবহার

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter Models |

Model হলো CodeIgniter এর একটি গুরুত্বপূর্ণ উপাদান, যা ডাটাবেস সংক্রান্ত কাজ পরিচালনা করে। এটি MVC (Model-View-Controller) আর্কিটেকচারের অংশ, যেখানে Model ডাটাবেস থেকে ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট করার দায়িত্ব পালন করে।


CodeIgniter Model তৈরি

CodeIgniter-এ একটি Model তৈরি করতে আপনাকে app/Models/ ডিরেক্টরিতে একটি ক্লাস তৈরি করতে হবে।

Model ক্লাস তৈরি

  1. app/Models/ ফোল্ডারে একটি নতুন PHP ফাইল তৈরি করুন। উদাহরণ: ProductModel.php
  2. Model ক্লাস কোড:

    <?php
    
    namespace App\Models;
    
    use CodeIgniter\Model;
    
    class ProductModel extends Model {
        protected $table      = 'products'; // ডাটাবেসের টেবিলের নাম
        protected $primaryKey = 'id';       // প্রাইমারি কি
    
        // টেবিলের ফিল্ড যা ইনসার্ট/আপডেট করার সময় ব্যবহার করা যাবে
        protected $allowedFields = ['name', 'price', 'description'];
    
        // স্বয়ংক্রিয়ভাবে created_at এবং updated_at ফিল্ড আপডেট
        protected $useTimestamps = true;
    }
    

বিস্তারিত:

  • protected $table: Model কোন টেবিলের সাথে কাজ করবে তা উল্লেখ করে।
  • protected $primaryKey: প্রাইমারি কি নির্ধারণ করে।
  • protected $allowedFields: ফিল্ড নির্ধারণ করে, যা ইনসার্ট বা আপডেট করার জন্য অনুমোদিত।
  • protected $useTimestamps: যদি টেবিলে created_at এবং updated_at ফিল্ড থাকে, তাহলে এদের স্বয়ংক্রিয়ভাবে আপডেট করে।

Model ব্যবহার

Controller এ Model লোড করা

Controller থেকে Model ব্যবহার করার জন্য:

  1. Controller এ Model ইনস্ট্যান্স তৈরি করুন:

    $productModel = new \App\Models\ProductModel();
    

ডাটাবেস অপারেশন

১. ডেটা রিট্রিভ (Retrieve Data)
public function getAllProducts() {
    $productModel = new \App\Models\ProductModel();
    $products = $productModel->findAll(); // সমস্ত ডেটা রিট্রিভ করে
    return json_encode($products);
}
২. নির্দিষ্ট ডেটা রিট্রিভ
public function getProduct($id) {
    $productModel = new \App\Models\ProductModel();
    $product = $productModel->find($id); // নির্দিষ্ট ID এর ডেটা রিট্রিভ করে
    return json_encode($product);
}
৩. ডেটা ইনসার্ট (Insert Data)
public function addProduct() {
    $productModel = new \App\Models\ProductModel();

    $data = [
        'name'        => 'Sample Product',
        'price'       => 100,
        'description' => 'This is a sample product'
    ];

    $productModel->save($data); // নতুন ডেটা ইনসার্ট করে
    echo "Product added successfully!";
}
৪. ডেটা আপডেট (Update Data)
public function updateProduct($id) {
    $productModel = new \App\Models\ProductModel();

    $data = [
        'id'          => $id,
        'price'       => 120,
        'description' => 'Updated product description'
    ];

    $productModel->save($data); // নির্দিষ্ট ডেটা আপডেট করে
    echo "Product updated successfully!";
}
৫. ডেটা ডিলিট (Delete Data)
public function deleteProduct($id) {
    $productModel = new \App\Models\ProductModel();
    $productModel->delete($id); // নির্দিষ্ট ডেটা ডিলিট করে
    echo "Product deleted successfully!";
}

Query বিল্ডার ব্যবহার

CodeIgniter এর Model ক্লাসে বিল্ট-ইন Query Builder আছে, যা ডাটাবেস অপারেশন সহজ করে।

কাস্টম কোয়েরি ব্যবহার

public function getProductsByPrice($price) {
    $productModel = new \App\Models\ProductModel();

    $products = $productModel->where('price >', $price)->findAll();
    return json_encode($products);
}

নির্দিষ্ট কলাম নির্বাচন

public function getProductNames() {
    $productModel = new \App\Models\ProductModel();

    $names = $productModel->select('name')->findAll();
    return json_encode($names);
}

Model এর সেরা প্র্যাকটিস

  1. Model ক্লাস পরিষ্কার রাখুন: শুধু ডাটাবেস সংক্রান্ত কাজ রাখুন, অতিরিক্ত লজিক যুক্ত করবেন না।
  2. Query Builder ব্যবহার করুন: SQL কোড ম্যানুয়ালি লিখার পরিবর্তে CodeIgniter এর Query Builder ব্যবহার করুন।
  3. Validation ব্যবহার করুন: ডাটা ইনসার্ট বা আপডেট করার সময় Model এর ভ্যালিডেশন ফিচার ব্যবহার করুন।
  4. Timestamps নিশ্চিত করুন: created_at এবং updated_at ফিল্ডগুলো স্বয়ংক্রিয়ভাবে ব্যবহারের জন্য $useTimestamps = true ব্যবহার করুন।

Model এর মাধ্যমে ডাটাবেস সংক্রান্ত কাজগুলোকে সহজ, পরিষ্কার এবং সংগঠিতভাবে পরিচালনা করা যায়। এটি CodeIgniter এর ডেভেলপমেন্টে একটি অপরিহার্য অংশ।

Content added By
Promotion