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

السؤال

نشر

أحاول القيام بالتالي في مكون Livewire:

$alertes = Alerte::with(['salarie', 'formation'])
    ->join('formations', 'formations.id', '=', 'alertes.formation_id')
    ->addSelect(DB::raw('date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage'))
    ->where('formations.entreprise_id', $this->entreprise_id)
    ->when($this->traitee, function ($query) {
        $query->where('traitee', $this->traitee);
    })
    ->orderByRaw($this->critere_tri, $this->asc ? 'asc' : 'desc')
    ->paginate($this->nombre_par_page);

ولكن عندما أحاول عرض :

$alerte->formation->intitule

فإنها لا تعمل:

intitule not found

لقد ألقيت نظرة على نتيجة الاستعلام مع dd. لدي حقل واحد فقط: date_recyclage.

لماذا لدي حقل واحد فقط في حين أن بداية الاستعلام الخاص بي يجب أن يعيد السجلات مع salarie  و formation . ما الخطأ في الكود الخاص بي؟ 

Recommended Posts

  • 0
نشر

بدل السطر التالي:

->addSelect(
	DB::raw('date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage'))

إستخدم:

->selectRaw(
  'alertes.*, 
  date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage')

السبب في ذلك أنك تستطيع استخدام التابع addSelect إن كان لديك نسخة منشئ استعلامات مسبقًا ورغبت في إضافة عمود آخر لأعمدة Select الحالي لكنه ليس لديك select لذلك فالناتج هو عمود واحد فقط. و في هذه الحالة يُمكن استخدام طريقة selectRaw بدلاً من addSelect (DB :: raw (...)). 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...