Model হলো CodeIgniter-এ MVC (Model-View-Controller) প্যাটার্নের একটি গুরুত্বপূর্ণ অংশ। এটি মূলত ডেটাবেস এবং ডেটা-সংক্রান্ত কাজ পরিচালনার জন্য ব্যবহৃত হয়। Model ডাটাবেস থেকে ডেটা রিট্রিভ, ইনসার্ট, আপডেট, বা ডিলিট করার জন্য দায়ী।
Model ফাইল app/Models
ডিরেক্টরিতে রাখা হয়।
উদাহরণস্বরূপ: একটি ProductModel তৈরি করুন।
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products'; // ডাটাবেসের টেবিলের নাম
protected $primaryKey = 'id'; // প্রাইমারি কী
protected $allowedFields = ['name', 'price', 'description']; // ইনসার্ট/আপডেটের জন্য অনুমোদিত ফিল্ডগুলো
}
Controller এ Model লোড করে ব্যবহার করুন:
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class Product extends BaseController
{
public function index()
{
$productModel = new ProductModel();
// সমস্ত প্রোডাক্ট ফেচ করা
$data['products'] = $productModel->findAll();
return view('product_list', $data);
}
}
Model-এ কোন ডাটাবেস টেবিল এবং প্রাইমারি কী ব্যবহার করা হবে তা সংজ্ঞায়িত করা হয়।
protected $table = 'products';
protected $primaryKey = 'id';
ডাটাবেসে যেসব ফিল্ড ইনসার্ট বা আপডেট করা যাবে, সেগুলো allowedFields
-এ উল্লেখ করতে হয়।
protected $allowedFields = ['name', 'price', 'description'];
CodeIgniter Model বিভিন্ন বিল্ট-ইন মেথড প্রদান করে ডেটা রিট্রিভ করার জন্য:
// সমস্ত ডেটা রিট্রিভ
$products = $productModel->findAll();
// নির্দিষ্ট রেকর্ড রিট্রিভ
$product = $productModel->find(1);
// টেবিল থেকে কন্ডিশন অনুযায়ী রেকর্ড
$product = $productModel->where('price >', 500)->findAll();
ডাটাবেসে ডেটা যোগ করার জন্য insert()
মেথড ব্যবহার করা হয়:
$productModel = new ProductModel();
$productModel->insert([
'name' => 'Product Name',
'price' => 500,
'description' => 'Product Description',
]);
ডাটাবেসে ডেটা আপডেট করার জন্য update()
মেথড ব্যবহার করা হয়:
$productModel->update(1, [
'price' => 600,
'description' => 'Updated Description',
]);
ডাটাবেস থেকে রেকর্ড মুছে ফেলার জন্য delete()
মেথড ব্যবহার করা হয়:
$productModel->delete(1); // ID 1 এর রেকর্ড মুছে ফেলবে
CodeIgniter Model কাস্টম SQL কুয়েরি সাপোর্ট করে।
$query = $productModel->query("SELECT * FROM products WHERE price > 500");
$result = $query->getResult();
CodeIgniter Model soft delete সাপোর্ট করে। এটি রেকর্ডকে মুছে না ফেলে deleted_at নামে একটি টাইমস্ট্যাম্প যোগ করে।
Model-এ নিচের প্রপার্টি সংযোজন করুন:
protected $useSoftDeletes = true;
protected $deletedField = 'deleted_at';
$productModel->delete(1); // এটি রেকর্ড মুছে না ফেলে deleted_at কলাম আপডেট করবে
CodeIgniter Model-এ ডিবাগিংয়ের জন্য getLastQuery()
মেথড ব্যবহার করতে পারেন:
$productModel->findAll();
echo $productModel->getLastQuery(); // সর্বশেষ কুয়েরি প্রদর্শন করবে
CodeIgniter-এ Model ব্যবহারের মাধ্যমে ডাটাবেস ম্যানেজমেন্ট আরও সহজ এবং কার্যকরী হয়। এটি ডেভেলপারদের কোড রাইটিং এবং রক্ষণাবেক্ষণ প্রক্রিয়া দ্রুত করতে সহায়ক।
Model হলো CodeIgniter এর MVC (Model-View-Controller) আর্কিটেকচারের একটি গুরুত্বপূর্ণ অংশ। এটি ডাটাবেস বা ডেটা-সংক্রান্ত সমস্ত কার্যকলাপ পরিচালনা করে। Model ব্যবহার করে ডাটাবেসের সাথে সংযোগ স্থাপন, ডেটা রিট্রিভাল, ডেটা মডিফিকেশন, এবং অন্যান্য ডেটাবেস অপারেশন করা যায়।
Model মূলত একটি ক্লাস যা ডাটাবেসের কার্যক্রম পরিচালনা করে। এটি ডাটাবেস থেকে ডেটা টেনে এনে Controller এ পাঠায় এবং View এর মাধ্যমে সেই ডেটা প্রদর্শন করে।
CodeIgniter এ Model তৈরি করার জন্য নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
app/Models
ডিরেক্টরিতে একটি নতুন Model তৈরি করুন। উদাহরণস্বরূপ, একটি ProductModel তৈরি করা যাক:
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products'; // টেবিলের নাম
protected $primaryKey = 'id'; // প্রাইমারি কী
// টেবিলের ফিল্ডসমূহ
protected $allowedFields = ['name', 'description', 'price'];
}
id
)।Controller-এ Model ব্যবহার করতে এটি লোড করতে হয়। উদাহরণস্বরূপ:
namespace App\Controllers;
use App\Models\ProductModel;
class ProductController extends BaseController
{
public function index()
{
$model = new ProductModel();
$data['products'] = $model->findAll(); // ডেটা রিট্রিভ
return view('product_list', $data);
}
}
ডেটা রিট্রিভ করা:
$products = $model->findAll(); // সমস্ত ডেটা
$product = $model->find(1); // নির্দিষ্ট ডেটা
ডেটা ইনসার্ট করা:
$model->save([
'name' => 'Laptop',
'description' => 'A high-performance laptop',
'price' => 1000
]);
ডেটা আপডেট করা:
$model->update(1, [
'price' => 1200
]);
ডেটা ডিলিট করা:
$model->delete(1);
Controller থেকে View-এ ডেটা পাঠানোর জন্য $data
অ্যারে ব্যবহার করা হয়। উদাহরণস্বরূপ:
public function index()
{
$model = new ProductModel();
$data['products'] = $model->findAll();
return view('product_list', $data);
}
View ফাইলে ডেটা অ্যাক্সেস করার উদাহরণ:
<h1>Product List</h1>
<ul>
<?php foreach ($products as $product): ?>
<li><?php echo $product['name']; ?> - $<?php echo $product['price']; ?></li>
<?php endforeach; ?>
</ul>
Model CodeIgniter এর একটি গুরুত্বপূর্ণ উপাদান, যা ডাটাবেস অপারেশন সহজ এবং কার্যকরী করে তোলে। এটি ডেটা এবং লজিক পরিচালনার মাধ্যমে অ্যাপ্লিকেশনের কার্যক্ষমতাকে উন্নত করে।
Model হলো CodeIgniter এর একটি গুরুত্বপূর্ণ উপাদান, যা ডাটাবেস সংক্রান্ত কাজ পরিচালনা করে। এটি MVC (Model-View-Controller) আর্কিটেকচারের অংশ, যেখানে Model ডাটাবেস থেকে ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট করার দায়িত্ব পালন করে।
CodeIgniter-এ একটি Model তৈরি করতে আপনাকে app/Models/
ডিরেক্টরিতে একটি ক্লাস তৈরি করতে হবে।
app/Models/
ফোল্ডারে একটি নতুন PHP ফাইল তৈরি করুন। উদাহরণ: ProductModel.php
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
ফিল্ড থাকে, তাহলে এদের স্বয়ংক্রিয়ভাবে আপডেট করে।Controller থেকে Model ব্যবহার করার জন্য:
Controller এ Model ইনস্ট্যান্স তৈরি করুন:
$productModel = new \App\Models\ProductModel();
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);
}
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!";
}
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!";
}
public function deleteProduct($id) {
$productModel = new \App\Models\ProductModel();
$productModel->delete($id); // নির্দিষ্ট ডেটা ডিলিট করে
echo "Product deleted successfully!";
}
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);
}
created_at
এবং updated_at
ফিল্ডগুলো স্বয়ংক্রিয়ভাবে ব্যবহারের জন্য $useTimestamps = true
ব্যবহার করুন।Model এর মাধ্যমে ডাটাবেস সংক্রান্ত কাজগুলোকে সহজ, পরিষ্কার এবং সংগঠিতভাবে পরিচালনা করা যায়। এটি CodeIgniter এর ডেভেলপমেন্টে একটি অপরিহার্য অংশ।
CodeIgniter এর Active Record প্যাটার্ন হলো ডাটাবেস ইন্টারঅ্যাকশনের জন্য একটি শক্তিশালী এবং সহজ পদ্ধতি। এটি ডাটাবেসের সাধারণ কাজ (যেমন সিলেক্ট, ইনসার্ট, আপডেট, ডিলিট) সম্পাদন করার জন্য একটি সহজ, রিডেবল এবং সিকিউর মেথড সরবরাহ করে।
Active Record প্যাটার্ন ডেটাবেস কোয়েরি লেখার পরিবর্তে ফাংশন-ভিত্তিক পদ্ধতি ব্যবহার করে, যা SQL ইনজেকশন প্রতিরোধ করতে সহায়তা করে।
ডাটাবেস থেকে ডেটা রিট্রিভ করার জন্য Active Record মেথড ব্যবহার করা হয়।
উদাহরণ:
$this->db->select('name, email');
$this->db->from('users');
$this->db->where('status', 'active');
$query = $this->db->get();
$result = $query->result();
উপরের কোডের সমতুল্য SQL কোয়েরি:
SELECT name, email FROM users WHERE status = 'active';
ডাটাবেসে নতুন ডেটা যোগ করার জন্য insert()
মেথড ব্যবহার করা হয়।
উদাহরণ:
$data = [
'name' => 'John Doe',
'email' => 'john@example.com',
'status' => 'active'
];
$this->db->insert('users', $data);
উপরের কোডের সমতুল্য SQL কোয়েরি:
INSERT INTO users (name, email, status) VALUES ('John Doe', 'john@example.com', 'active');
ডাটাবেসে বিদ্যমান ডেটা আপডেট করার জন্য update()
মেথড ব্যবহার করা হয়।
উদাহরণ:
$data = [
'status' => 'inactive'
];
$this->db->where('id', 1);
$this->db->update('users', $data);
উপরের কোডের সমতুল্য SQL কোয়েরি:
UPDATE users SET status = 'inactive' WHERE id = 1;
ডাটাবেস থেকে ডেটা মুছে ফেলার জন্য delete()
মেথড ব্যবহার করা হয়।
উদাহরণ:
$this->db->where('id', 1);
$this->db->delete('users');
উপরের কোডের সমতুল্য SQL কোয়েরি:
DELETE FROM users WHERE id = 1;
ডেটা সীমাবদ্ধ বা সাজানোর জন্য limit()
এবং order_by()
মেথড ব্যবহার করা হয়।
উদাহরণ:
$this->db->select('*');
$this->db->from('users');
$this->db->order_by('name', 'ASC');
$this->db->limit(10);
$query = $this->db->get();
ডেটা গ্রুপ এবং ফিল্টার করার জন্য group_by()
এবং having()
ব্যবহার করা হয়।
উদাহরণ:
$this->db->select('status, COUNT(*) as total');
$this->db->from('users');
$this->db->group_by('status');
$this->db->having('total > 10');
$query = $this->db->get();
লাইক ব্যবহার করে ডেটা ফিল্টার করার জন্য like()
মেথড ব্যবহার করা হয়।
উদাহরণ:
$this->db->select('*');
$this->db->from('users');
$this->db->like('name', 'John');
$query = $this->db->get();
CodeIgniter এর Active Record প্যাটার্ন ডাটাবেস ইন্টারঅ্যাকশনের জন্য একটি কার্যকরী এবং সহজ সমাধান। এটি কোডের সুরক্ষা ও রক্ষণাবেক্ষণ সহজতর করে।
Model হলো CodeIgniter এর MVC আর্কিটেকচারের একটি অংশ, যা ডাটাবেসের সাথে যোগাযোগ করে এবং ডেটা ম্যানেজমেন্ট পরিচালনা করে। এটি ডাটাবেস রিকোয়েস্ট পরিচালনা, ডেটা ফিল্টারিং, এবং ডেটা রিটার্ন করার জন্য ব্যবহৃত হয়।
CodeIgniter এ Model তৈরি করতে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
app/Models
ডিরেক্টরিতে যান।ProductModel.php
)।CodeIgniter\Model
ক্লাস থেকে এক্সটেন্ড করে একটি ক্লাস তৈরি করুন।<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products'; // টেবিলের নাম
protected $primaryKey = 'id'; // প্রাইমারি কী
protected $allowedFields = ['name', 'price', 'description']; // আপডেট করার অনুমতি প্রাপ্ত ফিল্ডগুলো
}
Model এর মাধ্যমে ডাটাবেসে কাজ করার আগে ডাটাবেস কনফিগার করতে হবে।
app/Config/Database.php
ফাইল খুলুন এবং ডাটাবেস তথ্য দিন:
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'your_database_name',
'DBDriver' => 'MySQLi',
];
অথবা .env
ফাইল ব্যবহার করুন:
database.default.hostname = localhost
database.default.database = your_database_name
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
Model ব্যবহার করতে কন্ট্রোলারে লোড করুন:
use App\Models\ProductModel;
$productModel = new ProductModel();
$products = $productModel->findAll();
$product = $productModel->find(1); // প্রাইমারি কী '1' এর ডেটা
$products = $productModel->where('price >', 100)->findAll();
Model এর insert
মেথড ব্যবহার করে ডেটা ইনসার্ট করুন:
$data = [
'name' => 'Laptop',
'price' => 50000,
'description' => 'High performance laptop',
];
$productModel->insert($data);
Model এর update
মেথড ব্যবহার করে ডেটা আপডেট করুন:
$data = [
'price' => 45000,
];
$productModel->update(1, $data); // ID 1 এর ডেটা আপডেট
Model এর delete
মেথড ব্যবহার করে ডেটা ডিলিট করুন:
$productModel->delete(1); // ID 1 এর ডেটা ডিলিট
যদি আপনি কাস্টম কুয়েরি চালাতে চান, Model এর query
মেথড ব্যবহার করতে পারেন:
$query = $productModel->query("SELECT * FROM products WHERE price > ?", [100]);
$results = $query->getResult();
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class Product extends BaseController
{
public function index()
{
$productModel = new ProductModel();
$data['products'] = $productModel->findAll(); // সমস্ত প্রোডাক্ট ফেচ
return view('product_list', $data); // ভিউ লোড
}
public function add()
{
$productModel = new ProductModel();
$data = [
'name' => 'Mobile Phone',
'price' => 30000,
'description' => 'Smartphone with 4GB RAM',
];
$productModel->insert($data); // নতুন প্রোডাক্ট ইনসার্ট
return redirect()->to('/product');
}
}
মেথড | কাজ |
---|---|
findAll() | সমস্ত ডেটা রিটার্ন করে। |
find($id) | নির্দিষ্ট ID এর ডেটা রিটার্ন করে। |
insert($data) | নতুন ডেটা ইনসার্ট করে। |
update($id, $data) | নির্দিষ্ট ID এর ডেটা আপডেট করে। |
delete($id) | নির্দিষ্ট ID এর ডেটা ডিলিট করে। |
where($field, $value) | কন্ডিশন অনুযায়ী ডেটা ফিল্টার করে। |
Model ব্যবহার করে CodeIgniter এ ডাটাবেস Interaction সহজ, কার্যকর এবং দ্রুত। এটি ডেটা ম্যানেজমেন্টকে আরও সুসংগঠিত এবং পুনঃব্যবহারযোগ্য করে তোলে।
Read more