2016-05-09 20 views
0

Ich versuche, diese Abfrage zu erhalten:"IN" Abfrage in Laravel 5.2

$my_query = "select * from tableuser where `userid`<> '$userid' and userid in 
(select friend from userrelations where blocked='no' and user_id='$userid')"; 

in Laravel 5.2

zu arbeiten, was ich bisher versucht:

$query_first = DB::table('userrelations') 
       ->select('friend') 
       ->where('blocked' , '=', 'no') 
       ->where('user_id' , '=', $userid) 
       ->get(); 

$my_query = DB::table('tableuser') 
       ->select('*') 
       ->where('userid' , '<>', $userid) 
       ->where('userid' , 'in', $query_first) 
       ->get(); 

, indem Sie diese Ich bekomme ein leeres Ergebnis, was nicht korrekt ist.

Hilfe bitte?

Antwort

1

Für die erste Abfrage sollten Sie

->get(); 

mit

->pluck('id'); 

Mit pluck() ersetzen Sie eine Reihe von IDs anstelle von Array von Objekten erhalten.


Dann falscher Teil in der zweiten Abfrage:

-> where ('Benutzer-ID', 'in', $ query_first)

Es gibt whereIn():

$users = DB::table('tableuser')->whereIn('userid', $query_first)->get(); 
+0

Danke @limote –

+0

@MounirElfassi froh, zu helfen! :) –