2016-12-13 2 views
-1

У меня есть модель с именем Tutor и у нее много SubjectshasMany() relationship. Я хочу написать запрос, который может получить все преподаватели, имеющие предметы Физика и математика.Как запросить WhereAnd в Laravel с отношениями?

Таблица структура субъектов выглядит следующим образом:

id | title | tutor_id 

Что является лучшим способом для достижения этой цели?

ответ

1

Чтобы получить все наставники, имеющие subjects физики и математики как то вы можете написать запрос, как:

Tutor::whereHas('subjects', function($q) { 
     $q->where('title', 'physics') 
    }) 
    ->whereHas('subjects', function($q) { 
     $q->where('title', 'maths') 
    }) 
    ->get(); 
+0

Спасибо, что помогли мне. Я забыл упомянуть об одном. Количество предметов будет из строки запроса и может быть любым из числа, например, 5 предметов или 3 предметов. Как я могу теперь это сделать? –

0
$tutors = Tutor::whereHas('subjects', function($q) { 
       $q->where('title', 'physics') 
        ->orWhere('title', 'maths'); 
      })->get(); 

Я не уверен, будет ли этот точный код работать или нет, но вы получите эту идею. Чтобы объяснить, subjects - это связь между Tutor и Subject и title должно быть полем в поле subject.

+0

Ищу и операции не в OR. Спасибо за вклад. –

+0

Удалите или, вы будете иметь и. –

Смежные вопросы