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

السؤال

نشر

أود أن أكون قادرًا على إضافة خاصية / خاصية مخصصة إلى نموذج 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...