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

كيف أضمن isActive=1 داخل جملة استعلام تربط بين جدولين على laravel؟

K@m@l

السؤال

لدي البنية التالية على تطبيق مبني على إطار العمل Laravel، حيث تربط علاقة بين جدولين، بالشكل التالي:

User
  - id
  - other stuff
NeighborhoodFilter
  - id
  - userId
  - neighborhoodId
  - isActive
Neighborhood
  - id
  - other stuff

أريد إنشاء وظيفة methode خاصة بـ user للحصول على جميع nighbhood الذين تربطهم به علاقة، وهذه هي محاولتي:

public function neighborhoods()
{
    return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id');
}

لكن لا أعلم كيف أجعل حملة الاستعلام تعتمد على isActive=1؟

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

Recommended Posts

  • 0

توفّر Laravel خاصية الربط whereHas في حال احتجنا التأكد من توفر الجدول المرتبط به -مع جدول آخر- على قيمة معينة.

وفي حالتنا هذه حيث يوجد رابط بين Neighborhood وَNeighborhoodFilter، من Neighborhood يمكننا كتابة:

public function neighborhoods()
{
    return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id')->whereHas('neighborhoodFilters', function($q){
        $q->where('isActive', 1);
    });
}

أو يمكنك استعمال رابطة belongsToMany وَ wherePivot:

public function neighborhoods()
{
    return $this->belongsToMany('Neighborhood', 'neighborhood_filters', 'user_id', 'neighbor_id')->wherePivot('isActive', 1);
}

laravel 5.2 relationships

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...