2015-03-14 2 views
0

У меня есть некоторые модели Featured_Course_Request, Course_Request, Response и Teacher. Featured_Course_RequesthasOneCourse_Request и Course_RequesthasManyResponse by Teacher.Как выбрать экземпляры с несколькими отношениями?

Я хочу получить только те объекты Featured_Course_Requests, на которые не удалось ответить вошедшему в систему учителю (нет ответа от входа в систему учителем.) Как я могу это сделать?

Я пытаюсь достичь этого с помощью следующего кода, но он не дает правильного вывода.

$featured_course_request = Featured_Course_Resquest::whereRaw('remaining_coins >= coins_per_click')->where('status', '=', 'open') 
    ->whereHas('courseRequest', function($q) use ($teacher){                
    $q->whereHas('responses', function($qe) use ($teacher){ 
     $qe->where('teacherID', '!=', $teacher->id); 
      }); 

    }); 

ответ

1

Вы можете нацелить вложенные отношения с точечным синтаксисом: 'courseRequest.responses' дальше больше вы будете нуждаться whereDoesntHave вместо whereHas:

$featured_course_request = Featured_Course_Resquest::whereRaw('remaining_coins >= coins_per_click') 
    ->where('status', '=', 'open') 
    ->whereDoesntHave('courseRequest.responses', function($q) use ($teacher){ 
     $qe->where('teacherID', '=', $teacher->id); 
    }) 
    ->get(); 
Смежные вопросы