ساخت مدل در Laravel

ساخت مدل در Laravel: راهنمای جامع

ساخت مدل در Laravel: راهنمای جامع

Laravel، فریم‌ورک محبوب PHP، ابزارهای قدرتمندی برای تعامل با پایگاه داده ارائه می‌دهد. مدل‌ها (Models) نقش کلیدی در این تعامل ایفا می‌کنند. آن‌ها نمایشی از جداول پایگاه داده در کد PHP شما هستند و امکان دسترسی، ویرایش و مدیریت داده‌ها را به شیوه‌ای شیءگرا فراهم می‌کنند. این مقاله به بررسی عمیق ساخت مدل در Laravel، مفاهیم مرتبط و کاربردهای عملی آن می‌پردازد.

مقدمه‌ای بر مدل‌ها در Laravel

مدل‌ها در Laravel، کلاس‌های PHP هستند که با یک جدول خاص در پایگاه داده مرتبط می‌شوند. آن‌ها به شما اجازه می‌دهند تا با استفاده از نام‌های آشنا و منطقی، به جای نوشتن کوئری‌های SQL پیچیده، با داده‌ها کار کنید. این امر باعث افزایش خوانایی، نگهداری و امنیت کد می‌شود.

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

ساخت مدل با Artisan

Laravel ابزار خط فرمان قدرتمندی به نام Artisan دارد که به شما کمک می‌کند تا بسیاری از وظایف توسعه را به سرعت و به آسانی انجام دهید. برای ساخت یک مدل جدید، می‌توانید از دستور make:model استفاده کنید.

فرمت دستور به صورت زیر است:

php artisan make:model ModelName

به جای ModelName، نام مدلی را که می‌خواهید ایجاد کنید وارد کنید. به عنوان مثال، برای ساخت مدلی به نام Post، دستور زیر را اجرا کنید:

php artisan make:model Post

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

ساخت مدل با Migration

هنگام ساخت مدل، می‌توانید به طور همزمان یک فایل Migration نیز ایجاد کنید. Migrationها به شما اجازه می‌دهند تا ساختار پایگاه داده خود را به صورت نسخه‌بندی شده مدیریت کنید. برای ایجاد مدل و Migration به طور همزمان، از گزینه -m یا --migration استفاده کنید:

php artisan make:model Post -m

این دستور علاوه بر فایل Post.php، یک فایل Migration جدید در دایرکتوری database/migrations نیز ایجاد می‌کند. نام فایل Migration بر اساس تاریخ و زمان ایجاد آن است.

ساخت مدل با Controller و Request

می‌توانید به طور همزمان یک مدل، Controller و Request نیز ایجاد کنید. این کار برای ساخت سریع‌تر صفحات CRUD (Create, Read, Update, Delete) بسیار مفید است. برای این کار، از دستور make:model با گزینه‌های -r (Request) و -c (Controller) استفاده کنید:

php artisan make:model Post -rc

این دستور فایل‌های Post.php، PostController.php و PostRequest.php را ایجاد می‌کند.

ساختار یک مدل در Laravel

فایل مدل در Laravel شامل یک کلاس PHP است که از کلاس IlluminateDatabaseEloquentModel ارث می‌برد. این کلاس پایه، متدهایی را برای تعامل با پایگاه داده فراهم می‌کند.

یک مدل معمولاً شامل ویژگی‌های زیر است:

  • $table: نام جدول پایگاه داده‌ای که مدل با آن مرتبط است. اگر این ویژگی تعریف نشود، Laravel به طور پیش‌فرض از نام مدل (به صورت Plural و Snake Case) به عنوان نام جدول استفاده می‌کند.
  • $primaryKey: نام ستون کلید اصلی جدول. اگر این ویژگی تعریف نشود، Laravel به طور پیش‌فرض از ستون id به عنوان کلید اصلی استفاده می‌کند.
  • $timestamps: یک مقدار Boolean که نشان می‌دهد آیا ستون‌های created_at و updated_at باید به طور خودکار مدیریت شوند یا خیر. به طور پیش‌فرض، این مقدار برابر با true است.
  • $fillable: یک آرایه از نام ستون‌هایی که می‌توانند به طور مستقیم از طریق ویژگی‌های مدل مقداردهی شوند. این ویژگی برای جلوگیری از آسیب‌پذیری‌های امنیتی مهم است.
  • $guarded: یک آرایه از نام ستون‌هایی که نباید به طور مستقیم از طریق ویژگی‌های مدل مقداردهی شوند.
  • Relationships: متدهایی که ارتباط بین مدل‌ها را تعریف می‌کنند (مانند One-to-One, One-to-Many, Many-to-Many).
  • Methods: متدهایی که منطق تجاری مرتبط با مدل را پیاده‌سازی می‌کنند.

تعریف Relationships

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

انواع اصلی روابط عبارتند از:

  • One-to-One: یک رکورد در یک جدول با یک رکورد در جدول دیگر مرتبط است.
  • One-to-Many: یک رکورد در یک جدول با چندین رکورد در جدول دیگر مرتبط است.
  • Many-to-Many: چندین رکورد در یک جدول با چندین رکورد در جدول دیگر مرتبط است.

برای تعریف یک رابطه، باید متدی را در مدل تعریف کنید که نوع رابطه و مدل مرتبط را مشخص کند. به عنوان مثال، برای تعریف یک رابطه One-to-Many بین مدل Post و مدل Comment، می‌توانید متد comments() را در مدل Post تعریف کنید:

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

این متد به Laravel می‌گوید که یک پست می‌تواند چندین کامنت داشته باشد.

استفاده از مدل‌ها

پس از ساخت مدل، می‌توانید از آن برای تعامل با پایگاه داده استفاده کنید. برای این کار، ابتدا باید یک نمونه از مدل ایجاد کنید:

$post = new Post();

سپس می‌توانید از متدهای Eloquent برای بازیابی، ایجاد، ویرایش و حذف داده‌ها استفاده کنید.

بازیابی داده‌ها

برای بازیابی تمام پست‌ها از پایگاه داده، می‌توانید از متد all() استفاده کنید:

$posts = Post::all();

برای بازیابی یک پست خاص بر اساس ID، می‌توانید از متد find() استفاده کنید:

$post = Post::find(1);

برای بازیابی پست‌ها بر اساس شرایط خاص، می‌توانید از متد where() استفاده کنید:

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

ایجاد داده‌ها

برای ایجاد یک پست جدید، می‌توانید یک نمونه از مدل ایجاد کنید، ویژگی‌های آن را مقداردهی کنید و سپس متد save() را فراخوانی کنید:

$post = new Post();
$post->title = 'My New Post';
$post->content = 'This is the content of my new post.';
$post->save();

ویرایش داده‌ها

برای ویرایش یک پست موجود، ابتدا باید آن را از پایگاه داده بازیابی کنید، ویژگی‌های آن را تغییر دهید و سپس متد save() را فراخوانی کنید:

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

حذف داده‌ها

برای حذف یک پست، می‌توانید متد delete() را فراخوانی کنید:

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

نتیجه‌گیری

مدل‌ها جزء اساسی فریم‌ورک Laravel هستند و نقش مهمی در تعامل با پایگاه داده ایفا می‌کنند. با استفاده از مدل‌ها، می‌توانید کد خود را سازماندهی کنید، خوانایی آن را افزایش دهید و امنیت آن را بهبود بخشید. این مقاله به شما یک درک جامع از ساخت و استفاده از مدل‌ها در Laravel ارائه داد. با تمرین و تجربه، می‌توانید از تمام قابلیت‌های Eloquent ORM برای ساخت برنامه‌های وب قدرتمند و مقیاس‌پذیر استفاده کنید.