Как присоединиться к коллекции 2 в запросе laravel

#laravel #join #collections

Вопрос:

У меня есть модель студенческого образования, и в этой модели я получил

 public function student_education_countries()
{
    return $this->hasMany(StudentEducationCountry::class, 'education_id');
}
 

и

 public function student_education_education_types()
{
    return $this->hasMany(StudentEducationEducationType::class, 'education_id');
}
 

в модели StudentEducationCountry я получил

 public function student_education()
{
    return $this->belongsTo(StudentEducation::class, 'education_id');
}

public function student_country()
{
    return $this->belongsTo(StudentCountry::class, 'country_id');
}
 

и в модели типа studenteducation я получил

 public function student_education()
{
    return $this->belongsTo(StudentEducation::class, 'education_id');
}
public function student_educationcategory()
{
    return $this->belongsTo(StudentEducationcategory::class, 'educationcategory_id');
}
 

Вопрос в том, как я должен присоединиться, чтобы получить все образования, где country_id равен 2, а тип-средний

Ответ №1:

Просто с whereHas()

 $educations = StudentEducation::query()->whereHas('student_education_countries', function (Builder $query) {
    $query->where('id', 2);
})->whereHas('student_education_education_types', function (Builder $query) {
    //maybe here you need another columns
    $query->where('type', 'secondary');
})->get();