اذهب إلى المحتوى
  • 0

إضافة خاصية إلى نموذج Laravel / Eloquent عند التحميل

Mahmoud Alrashidi

السؤال

أود أن أكون قادرًا على إضافة خاصية / خاصية مخصصة إلى نموذج Laravel / Eloquent عند تحميله ، على سبيل المثال ، في الوقت الحالي ، لدي في المتحكم:

public function index()
{
  $sessions = EventSession::all();
  foreach ($sessions as $i => $session) {
  $sessions[$i]->available = $session->getAvailability();
  }
  return $sessions;
}

سيكون من الجيد  حذف الحلقة وأن تكون الخاصية available  معيّنة ومعبأة بالفعل.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يُمكنك إضافة الخاصية التي تريدها في النموذج بإضافة موصل (accessor):

public function getAvailabilityAttribute()
{
  return $this->calculateAvailability();
}

ثم تضيف الخاصية إلى مصفوفة appends 

protected $appends = ['availability'];

ليُصبح النموذج بهذا الشكل:

class EventSession extends Eloquent {

  protected $table = 'sessions';
  protected $appends = ['availability'];

  public function getAvailabilityAttribute()
  {
  return $this->calculateAvailability();  
  }
}

و الآن يُمكن الوصول للخاصية عند تحميل النموذج.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

توجد طريقة أخرى لإضافة الخاصية  إلى نمودج وهي  عن طريق تعريف دالة خاصة في ملف النمودج الخاص بك مثلا:

لنفترض أن لديك عمودين باسم first_name و last_name في جدول المستخدمين وتريد استرداد الاسم الكامل. يمكنك تحقيق ذلك من خلال الكود التالي:

class User extends Eloquent {


    public function getFullNameAttribute()
    {
        return $this->first_name.' '.$this->last_name;
    }
}

الآن يمكنك الحصول على الاسم الكامل full_name على النحو التالي:

$user = User::find(1);
$user->full_name;

 

تم التعديل في بواسطة محمد أيت لعرايك
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...