#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();