Eloquent: Generating Model Classes হলো Laravel-এ ডাটাবেস টেবিলের সাথে ইন্টার্যাক্ট করার জন্য মডেল ক্লাস তৈরির একটি প্রক্রিয়া। Eloquent ORM (Object-Relational Mapper) ব্যবহার করে আপনি ডাটাবেস টেবিল থেকে সহজে ডেটা রিড, ক্রিয়েট, আপডেট এবং ডিলিট করতে পারেন।
Model Class তৈরি করার পদ্ধতি
১. Artisan কমান্ড ব্যবহার করে Model তৈরি করা
Laravel-এর artisan CLI ব্যবহার করে মডেল ক্লাস তৈরি করা হয়। নিচের কমান্ডটি রান করুন:
php artisan make:model ModelName
উদাহরণস্বরূপ, একটি Post নামে মডেল তৈরি করতে:
php artisan make:model Post
এটি app/Models ডিরেক্টরির মধ্যে একটি Post.php ফাইল তৈরি করবে।
মডেলের বেসিক কাঠামো
মডেলটি সাধারণত এরকম দেখতে হবে:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
}
২. মাইগ্রেশন ফাইল সহ মডেল তৈরি করা
মডেল এবং ডাটাবেস মাইগ্রেশন একসাথে তৈরি করতে নিচের কমান্ড ব্যবহার করুন:
php artisan make:model Post -m
এটি দুটি জিনিস তৈরি করবে:
-
Postমডেল। -
database/migrations/2025_01_05_000000_create_posts_table.phpনামে একটি মাইগ্রেশন ফাইল।
৩. মডেলের সাথে Factory এবং Seeder তৈরি করা
Factory এবং Seeder ফাইল সহ মডেল তৈরি করতে:
php artisan make:model Post -mfsc
- m: মাইগ্রেশন তৈরি করবে।
- f: ফ্যাক্টরি তৈরি করবে।
- s: সিডার তৈরি করবে।
- c: কন্ট্রোলার তৈরি করবে।
মডেলে ডাটাবেস টেবিলের সাথে সম্পর্ক
১. ডিফল্ট টেবিল নাম
Laravel মডেল ক্লাসের নাম অনুযায়ী ডাটাবেস টেবিলের নাম ধরে নেয়।
যেমন:
-
Postমডেলের ডিফল্ট টেবিল হবেposts। -
Userমডেলের ডিফল্ট টেবিল হবেusers।
যদি আপনি কাস্টম টেবিল ব্যবহার করতে চান, তাহলে মডেলে $table প্রোপার্টি সেট করুন:
class Post extends Model
{
protected $table = 'blog_posts';
}
মডেলের গুরুত্বপূর্ণ প্রোপার্টি এবং মেথড
১. $fillable এবং $guarded
ডেটাবেসে কোন কোন ফিল্ডে ডেটা ইনসার্ট করা যাবে তা নির্ধারণ করতে $fillable বা $guarded ব্যবহার করা হয়।
- $fillable: নির্ধারিত ফিল্ডগুলোতে ডেটা ইনসার্ট করা যাবে।
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
- $guarded: নির্ধারিত ফিল্ডগুলোতে ডেটা ইনসার্ট করা যাবে না।
class Post extends Model
{
protected $guarded = ['id'];
}
২. $primaryKey
যদি আপনার টেবিলের প্রাইমারি কী id ছাড়া অন্য কিছু হয়:
class Post extends Model
{
protected $primaryKey = 'post_id';
}
৩. $timestamps
Laravel টেবিলের created_at এবং updated_at কলাম ডিফল্ট হিসেবে ব্যবহার করে। যদি এগুলো ব্যবহার করতে না চান:
class Post extends Model
{
public $timestamps = false;
}
৪. সম্পর্ক (Relationships)
Eloquent সম্পর্ক ব্যবহারে মডেল একে অপরের সাথে যুক্ত করা যায়।
- এক থেকে এক সম্পর্ক (One-to-One):
public function user()
{
return $this->hasOne(User::class);
}
- এক থেকে অনেক সম্পর্ক (One-to-Many):
public function comments()
{
return $this->hasMany(Comment::class);
}
- অনেক থেকে অনেক সম্পর্ক (Many-to-Many):
public function tags()
{
return $this->belongsToMany(Tag::class);
}
Top comments (0)