2017-05-23 7 views
1

私のコレクションを崩壊させるのに助けが必要です。それは空のコレクションを返すので その私のコードララベルの2つのコレクションを1つにまとめます

public function showFriends(){ 
      $request1 = DB::table('friends_users') 
       ->join('users', 'users.id', '=', 'friends_users.user_id') 
       ->where([['friend_id', '=',Auth::user()->id],['accepted', '=',true]]) 
       ->orWhere([['user_id','=',Auth::user()->id],['accepted','= ',true]]) 
       ->get(); 

       $request2 = DB::table('friends_users') 
       ->join('users', 'users.id', '=', 'friends_users.friend_id') 
        ->where([['user_id','=',Auth::user()->id] , ['accepted','=',true]]) 
        ->get(); 

        $all = collect($request1,$request2)->collapse(); 
     return $all; 

    } 

問題は、すべての変数$です。ご協力ありがとうございます。

+0

($ request1、$ request2)を収集=この '$コレクションを試してみてください;' '$崩壊= $コレクション - > collapse(); ' –

+0

同じ空のコレクションを返します:/ – kacper1230

+0

$ req1-> merge($ req2)を試すことができますか? –

答えて

2

は、コレクションのマージ方法を使用して試すことができます:

$all = $request1->merge($request2); 
+0

それは働いた!ありがとうございます:) – kacper1230

+0

私はそれが助けてうれしいです、あなたは答えをマークしたいと思いますか? – ayip

0

あなたはこの

$collection = collect($request1,$request2); 
$collapsed = $collection->collapse(); 
0

あなたはまた、unionを利用することにより、1つのクエリで潜在的にこれを行うことができます。

public function showFriends(){ 
    $query1 = DB::table('friends_users') 
     ->join('users', 'users.id', '=', 'friends_users.user_id') 
     ->where([['friend_id', '=',Auth::user()->id],['accepted', '=',true]]) 
     ->orWhere([['user_id','=',Auth::user()->id],['accepted','= ',true]]); 

    $request = DB::table('friends_users') 
     ->join('users', 'users.id', '=', 'friends_users.friend_id') 
     ->where([['user_id','=',Auth::user()->id] , ['accepted','=',true]]) 
     ->union($query1) 
     ->get(); 


    return $request; 
    return $request->all(); // If you want an array rather than collection 
} 

Laravel Documentation on unions

クエリービルダーは、2つのクエリーを「結合」する方法も提供します。 たとえば、最初のクエリを作成することができ、組合に 組合方式を使用して2番目のクエリで

+0

私はあなたに感謝して覚えています:) – kacper1230

関連する問題