Как я могу сделать этот SQL в Query Builder laravel

Как я могу сделать этот SQL в Query Builder laravel

select Doctor_id from doctors where Doctor_id NOT IN
 (SELECT Doctor_id from report_reviewers WHERE Report_id = 26 )

person mahmoud310    schedule 30.04.2017    source источник


Ответы (1)


Попробуйте с этим

$result = DB::table('doctors')
->whereNotIn('doctor_id', function($q){
    $q->from('report_reviewers')
    ->select('Doctor_id')
    ->where('Report_id', '=', 26)
})
->select('doctor_id')
->get();

Когда вы сомневаетесь, если вы знаете чистый SQL, вы можете просто сделать

$query = 'select Doctor_id from doctors ...';
$result = DB::select($query);

Кроме того, вся заслуга принадлежит этому гению Как создать подзапрос с помощью Laravel Eloquent ?

Обновить

Отсутствующий аргумент исходит из закрытия, которое вы используете

->whereNotIn('doctor_id', function($q,$id){ 
    $q->from('report_reviewers') 
    ->select('Doctor_id') 
    ->where('Report_id',$id); 
}) 

Вам нужно передать переменную $id вот так

->whereNotIn('doctor_id', function($q) use ($id) { 
    $q->from('report_reviewers') 
    ->select('Doctor_id') 
    ->where('Report_id',$id); 
}) 

Попробуйте еще раз и посмотрите.

person EddyTheDove    schedule 30.04.2017
comment
как насчет этого: $result = DB::table('doctors') -›join('users', 'doctors.UserID', '=', 'users.id') -›where('doctors.Acceptable', 1) ->whereNotIn('doctor_id', function($q,$id){ $q-›from('report_reviewers') -›select('Doctor_id') -›where('Report_id',$id); } ) ->select('doctors.doctor_id','users.name') ->get(); отсутствует в аргументе 2 ($id) - person mahmoud310; 01.05.2017
comment
О, неважно. Вы неблагодарны. Мой код сработал, вы приняли мой ответ. Теперь вам нужна дополнительная помощь, вы не принимаете мой ответ, хотя он сработал. Все хорошо, хорошего дня. - person EddyTheDove; 02.05.2017
comment
спасибо EddyTheDove за помощь в редактировании вашего ответа для этого $this-›xx = $id; $result = DB::table('doctors') -›join('users', 'doctors.UserID', '=', 'users.id') -›where('doctors.Acceptable',1) -› whereNotIn('doctor_id', function($q){ $q-›from('report_reviewers') -›select('Doctor_id') -›where('Report_id',$this-›xx); }) -›select ('doctors.doctor_id','users.name') ->get(); - person mahmoud310; 02.05.2017