مارک پلاس

تکنولوژی نوین اینترنتی

مدل لاراول

دسته‌بندی‌ها

مدل لاراول

📊 مدل‌ها در لاراول


مدل‌ها در لاراول به عنوان نماینده‌ای از جداول پایگاه داده عمل می‌کنند و به شما این امکان را می‌دهند که با داده‌ها به‌صورت ساده و با استفاده از Eloquent ORM کار کنید. در این مقاله، روش‌های مختلف استفاده از مدل‌ها، عملیات پایه‌ای و روابط بین مدل‌ها را بررسی خواهیم کرد.


1. 🛠 تعریف مدل در لاراول

برای تعریف یک مدل در لاراول، می‌توانید از دستور artisan make:model استفاده کنید. به عنوان مثال، برای ایجاد مدل Post، دستور زیر را اجرا کنید:

bash
php artisan make:model Post

این دستور یک کلاس مدل به نام Post در پوشه app/Models ایجاد می‌کند.


2. 🏷 اتصال مدل‌ها به جداول پایگاه داده

لاراول به طور پیش‌فرض نام جدول را از مدل شما به صورت جمع به‌دست می‌آورد. برای مثال، مدل Post به طور پیش‌فرض به جدول posts متصل می‌شود. اگر نام جدول شما متفاوت باشد، می‌توانید آن را در مدل مشخص کنید:

php
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $table = 'custom_table_name'; }

3. ⚙️ ویژگی‌های مدل در لاراول

برای کنترل ویژگی‌های مدل، می‌توانید از ویژگی‌های مختلف مانند fillable، guarded و timestamps استفاده کنید.

ویژگی‌های پرشده ($fillable):

این ویژگی تعیین می‌کند که کدام فیلدها می‌توانند به‌طور جمعی پر شوند.

php
protected $fillable = ['title', 'content'];

ویژگی‌های محافظت‌شده ($guarded):

این ویژگی فیلدهایی را که نمی‌توانند به‌طور جمعی پر شوند مشخص می‌کند.

php
protected $guarded = ['id'];

تایم‌استمپ‌ها ($timestamps):

اگر می‌خواهید از تایم‌استمپ‌ها (مثل created_at و updated_at) استفاده نکنید، می‌توانید آن‌ها را غیرفعال کنید.

php
public $timestamps = false;

4. 🔄 عملیات پایه‌ای با مدل‌ها

ذخیره داده‌ها

برای ذخیره داده‌ها در مدل، می‌توانید از متد save() استفاده کنید:

php
$post = new Post; $post->title = 'My First Post'; $post->content = 'Content of my first post.'; $post->save();

به‌روزرسانی داده‌ها

برای به‌روزرسانی داده‌ها:

php
$post = Post::find(1); $post->title = 'Updated Title'; $post->save();

حذف داده‌ها

برای حذف داده‌ها:

php
$post = Post::find(1); $post->delete();

5. 📈 عملیات پیشرفته با Eloquent

لاراول اجازه می‌دهد تا پرس‌وجوهای پیچیده‌تری با استفاده از Eloquent ORM انجام دهید.

جستجو با شرایط

php
$posts = Post::where('title', 'like', '%First%')->get();

مرتب‌سازی داده‌ها

php
$posts = Post::orderBy('created_at', 'desc')->get();

استفاده از شرط‌های مختلف

php
$posts = Post::where('status', 'published') ->where('created_at', '>', '2025-01-01') ->get();

گرفتن یک نتیجه

php
$post = Post::find(1); // پست با ID برابر با 1

6. 🔗 روابط بین مدل‌ها

لاراول روابط مختلفی را بین مدل‌ها پشتیبانی می‌کند. این روابط شامل یک به یک (One-to-One)، یک به چند (One-to-Many) و چند به چند (Many-to-Many) هستند.

رابطه یک به یک (One-to-One)

در مدل User:

php
public function profile() { return $this->hasOne(Profile::class); }

در مدل Profile:

php
public function user() { return $this->belongsTo(User::class); }

رابطه یک به چند (One-to-Many)

در مدل Post:

php
public function comments() { return $this->hasMany(Comment::class); }

در مدل Comment:

php
public function post() { return $this->belongsTo(Post::class); }

رابطه چند به چند (Many-to-Many)

در مدل Student:

php
public function courses() { return $this->belongsToMany(Course::class); }

در مدل Course:

php
public function students() { return $this->belongsToMany(Student::class); }

7. 🔎 استفاده از Scope‌ها

Scope‌ها در لاراول به شما این امکان را می‌دهند که فیلترهای قابل استفاده مجدد برای مدل‌ها ایجاد کنید. به عنوان مثال، یک scope برای جستجوی پست‌های منتشر شده:

php
public function scopePublished(Builder $query) { return $query->where('status', 'published'); }

سپس می‌توانید از این scope در پرس‌وجوها استفاده کنید:

php
$posts = Post::published()->get();

نتیجه‌گیری

مدل‌ها در لاراول به شما این امکان را می‌دهند که به‌راحتی با پایگاه داده تعامل داشته باشید. با استفاده از Eloquent ORM می‌توانید عملیات CRUD را به ساده‌ترین شکل ممکن انجام دهید و روابط پیچیده بین جداول را به راحتی مدیریت کنید.

محتوای مرتبط

پست‌های مرتبط