چگونه : یک خصیصه به Model در Laravel اضافه کنیم؟

تبلیغات
کانال تلگرام فتولیا

همانطور که می دانید Model در معماری نرم افزار MVC به رابط برنامه با پایگاه داده گفته می شود و همه ارتباط ها با دیتابیس از طریق مدل انجام میگیره . معمولا مقدار برگشتی مدل بر اساس فیلدهای جدول مربوطه در دیتابیس هست .مثلا فیلدهای ID, Name, Family, Password و … برای جدول کاربر برگشت داده می شوند (ساختار جدول طبق تعریف هر پروژه ممکن است متفاوت باشد) . به فیلدهای جدول که در مدل مربوط به همان جدول تعریف می شوند در لاراول خصیصه یا Attribute گفته میشود.

حالا فرض کنید می خواهید یک خصیصه جدید که در جدول مربوطه وجود ندارد به مدل اضافه کنید مثلا در بالا فیلد نام کاربری در جدول نداریم و می خواهیم در Model مربوط به جدول User آن را بسازیم و به کنترلر برگشت دهیم . یا فرض کنید می خواهید Slug یا همان آدرس SEO مقاله را در مدل سرهم کنید و برگشت دهید و …

یک Model معمولی در لاراول معمولا به این شکل است:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //
}

اول باید خصیصه ای که می خواهیم اضافه کنیم به لیست خصایص اضافه کنیم:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * The accessors to append to the model's array form.
     *
     * @var array
     */
    protected $appends = ['url'];
}

اضافه کردن کد بالا برای متد های toArray()  و toJson() مدل مهم است. حالا می توانیم یک Accessor برای خصیصه جدید تعریف کنیم:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * The accessors to append to the model's array form.
     *
     * @var array
     */
    protected $appends = ['url'];

    /**
     * @return string
     */
    public function getUrlAttribute() {
        return route('post',[$this->attributes['slug']]);
    }
}

و تمام شد ! به این صورت که دیدید می توانید خصیصه های مختلفی به مدل تان اضافه کنید. فقط دقت کنید که مدل فقط داده ها را برای برنامه شما فراهم می کند و آنها را اجرا نمی کند!

در همین رابطه :   LaraCSV - ایجاد فایل های CSV از اطلاعات جداول Eloquent Model

منبع

پاسخ دهید

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

More in HTML 5
دانلود رایگان ۱۰ قالب واکنش گرای Bootstrap

خوشبختانه خیلی از توسعه دهندگان و طراحان قالب هستند که قالب های وب سایت زیبا و رایگانی را طراحی و...

Close