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

السؤال

نشر

السلام عليكم.

أريد جلب الإختبارات الموجودة بقاعدة البيانات ضمن شرط level_id فأستخدم الكود التالي

Exam::where('level_id', $request->level)
->select('id', 'subject_id', 'teacher_id', 'created_at')
->get();

وأجلب معها relation ['teacher', 'subject'] فيصبح الكود كالتالي

Exam::with(['teacher', 'subject'])
->where('level_id', $request->level)
->select('id', 'subject_id', 'teacher_id', 'created_at')
->get();

سؤالي هو أن علاقة الteacher المجلوبة ضمن collection exams تحتوي على علاقة profile

فأريد جلب علاقة الprofile أيضا التي توجد داخل علاقة الteacher

توضيح أكثر: 

كل exam له teacher وكل teacher له profile

أريد جلب العلاقة profile ضمن العلاقة teacher ضمن exam يعني كالتالي

@foreach($exams as $exam)
{{ $exam->teacher->profile }}
@endforeach

فكيف أفعل هذا وشكرا.

أستعمل لارافل 8

Recommended Posts

  • 0
نشر
بتاريخ 24 دقائق مضت قال محمود رضا موسى:

أريد جلب العلاقة profile ضمن العلاقة teacher ضمن exam يعني كالتالي

أضف العلاقات التي تريدها مع with أي جرب التالي:

Exam::with(['teacher.profile', 'subject'])
            ^^^^^^^^^^^^^^^^

الشكل العام لها:

with('relation1.relation2.relation3')->get();

اجلب العلاقات المرتبطة الواحدة تلوَ الأخرى..

  • 1
نشر

يُمكنك إستخدام التحميل الحثيث المتداخل بالشكل التالي:

<?php

Exam::with(['teacher', 'teacher.profile', 'subject'])
->where('level_id', $request->level)
->select('id', 'subject_id', 'teacher_id', 'created_at')
->get();

كما قد نرغب أحياناً في التحديد او عمل شروط معينة على العلاقة نفسها فنُمرر مصفوفة للتابع with حيث المفتاح هو إسم العلاقة والقيمة تكون عبارة عن closure نحدد فيها ما نرغب به بهذا الشكل مثلاً:

<?php

Exam::with(['teacher' => function ($query) {
    $query->with('profile');
}, 'subject'])
->where('level_id', $request->level)
->select('id', 'subject_id', 'teacher_id', 'created_at')
->get();

في هذه الحالة نرغب بتحميل العلاقة أيضاً لكن في حالات أخرى نكون بحاجة لعمل شروط على حقول العلاقة فالطريقة الثانية تساعد في مثل هذه الحالات.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...