2017-07-11 15 views
5

Chcę napisać zapytanie sub wewnątrz, gdzie w warunku i w podkwerendy były warunku, sprawdzając z pola zapytania nadrzędnego.Podzapytanie Laravel 5.4, w którym stanie?

następująco,

$query = DB::table('users'); 
$query->whereNotIn('users.id', function($query) use ($request) { 
      $query->select('award_user.user_id') 
        ->from('award_user') 
        ->where('award_user.user_id', 'users.id') 
        ->where('award_user.award_id', $request->award_id); 
     }); 

Zapytanie pracuje bez zarzutu, ale

->where('award_user.user_id', 'users.id') 

Linia ta, users.id nie bierze od zapytania nadrzędnego. Jeśli wprowadzę numer ręcznie, to działa poprawnie.

Co jest nie tak z moim zapytaniem .. czy możesz zaproponować.

+0

Nie Problem z wielokrotnie id, ale problem z users.id –

+0

należy spróbować zapytanie poprzez dodanie '-> toSql()' aby uzyskać formatu sql i uruchom że ręcznie w phpMyadmin lub Mysql Query Browser! –

Odpowiedz

1

użycie whereRaw zamiast where

$query = DB::table('users'); 
$query->whereNotIn('users.id', function($query) use ($request) { 
      $query->select('award_user.user_id') 
        ->from('award_user') 
        ->whereRaw('award_user.user_id', 'users.id') 
        ->whereRaw('award_user.award_id = '.$request->award_id); 
     }); 
+0

teraz identyfikator użytkownika nadrzędnego działa, ale drugi 'whereRaw' nie stosuje –

+1

@NaseehaSahla,' -> whereRaw ('award_user.award_id ='. $ Request-> award_id); 'używaj tego jako drugiej wartości' whereRaw'. –

+0

na drugim miejscu, w którym nie ma się na baczcie, ale gdzie działa, nie zmieniaj się w drugiej wciąż nie działa, niż daj mi znać –

Powiązane problemy