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

خطأ في إرجاع بيانات العلاقة في laravel

Mahmoud Alrashidi

السؤال

لدي نموذجين PaymentMethod و PaymentMethodCategory حيث العلاقة بينهما هي واحد لمتعدد أي كل PaymentMethod تنتمي إلى PaymentMethodCategory و المفتاح الثانوي الذي يربط بينهما هو payment_method_category_id و العلاقة في النموذج PaymentMethod بالشكل التالي:

public function category()
{
  return $this->belongsTo(PaymentMethodCategory::class, 'payment_method_category_id', 'id');
}

لكن عند إرجاع و تحديد بعض بيانات العلاقة كما هو موضح أدناه يُعطي null:

return PaymentMethod::select('name', 'slug')
  ->with(['category' => function($query){
    $query->select('id', 'name')->where('status', 1);
  }])->get();

لكن عند حذف:

$query->select('id', 'name')

يتم إرجاع كافة البيانات، لا أدري ما المشكلة و كيف أقوم بحلها.

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

Recommended Posts

  • 1

حتى تستطيع إستخدام التحميل الحثيث بإستخدام التابع with يجب عليك تحديد المفتاح الثانوي ضمن الحقول التي تختارها في التابع select تأكد تماما أن إسم المفتاح الثانوي هو payment_method_category_id ثم قم بتغيير:

return PaymentMethod::select('name', 'slug')
  ->with(['category' => function($query){
    $query->select('id', 'name')->where('status', 1);
  }])->get();

إلى الشكل التالي بإضافة تحديد حقل المفتاح الثانوي:

<?php
return PaymentMethod::select('name', 'slug', 'payment_method_category_id')
  ->with(['category' => function($query){
    $query->select('id', 'name')->where('status', 1);
  }])->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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...