برنامه نویسی

Laravel Eloquent ORM در Bangla Part-2 (روشن‌های مدل Eloquent)

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

قوانین مدل لاراول Eloquent

1. نام جدول (نام جدول)

به‌طور پیش‌فرض، مدل‌های Eloquent با جدولی به نام اشکال جمع مدل‌ها مرتبط هستند.

قوانین پیش فرض:

  • مدل: Post
  • جدول: posts
  • مدل: Category
  • جدول: categories

استفاده از جداول سفارشی:

شما $table شما می توانید نام جدول سفارشی را با استفاده از ویژگی ها تنظیم کنید.

class Post extends Model
{
    protected $table = 'blog_posts';
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. کلید اصلی

Eloquent به طور پیش فرض فرض می کند که جدول کلید اصلی است id.

استفاده از کلیدهای اصلی سفارشی:

شما $primaryKey می توانید کلید اصلی را با ویژگی ها سفارشی کنید.

class Post extends Model
{
    protected $primaryKey = 'post_id';
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلیدهای افزایش خودکار و غیر افزایشی:

اگر کلید اصلی افزایشی نیست، پس $incrementing دارایی false انجام دهید

class Post extends Model
{
    protected $primaryKey = 'uuid';
    public $incrementing = false;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. ستون مهر زمان (مهر زمانی)

لاراول به صورت خودکار created_at و updated_at ستون ها را مدیریت می کند.

برای خاموش کردن مهر زمانی:

class Post extends Model
{
    public $timestamps = false;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نام ستون مهر زمان سفارشی:

class Post extends Model
{
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. زمین های پر کردنی و محافظت شده (تخصیص انبوه)

به طور پیش فرض، لاراول حفاظت از انتساب انبوه را فراهم می کند.

$fillable:

$fillable تعیین می کند که انتساب انبوه کدام فیلدها مجاز خواهد بود.

class Post extends Model
{
    protected $fillable = ['title', 'content'];
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

$guarded:

$guarded تعیین می کند که اختصاص انبوه کدام فیلدها ممنوع است.

class Post extends Model
{
    protected $guarded = ['id'];
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. روابط

Eloquent چند قرارداد پیش فرض برای استفاده از روابط دارد.

رابطه یک به یک:

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

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رابطه یک به چند:

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

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رابطه چند به چند:

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. نام جدول پیش‌فرض (جدول محوری)

در روابط چند به چند، لاراول به طور پیش فرض نام جدول را به ترتیب حروف الفبای نام دو مدل ایجاد می کند.

نام جدول پیش فرض:

post_tag (اگر مدل Post و Tag است).

نام جدول محوری سفارشی:

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class, 'custom_pivot_table');
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. رویدادهای مدل

فصیح وقایع مختلف را الگوبرداری می کند (به عنوان مثال: creating، updating، deleting) می تواند باعث شود.

class Post extends Model
{
    protected static function booted()
    {
        static::creating(function ($post) {
            $post->slug = Str::slug($post->title);
        });
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. کنوانسیون نقدینگی سفارشی (گستره جهانی)

یک دامنه جهانی را می توان به یک مدل اضافه کرد.

class Post extends Model
{
    protected static function booted()
    {
        static::addGlobalScope('published', function ($query) {
            $query->where('status', 'published');
        });
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا