2016-09-07 5 views
1

私は((どことどこ)OR(どことどこ))を作成しようとしていると検索の多くの後、私はこの((どことどこ)OR(どことどこ))Laravel 5.2

$sender = \App\User::where('username','=',$username)->firstOrFail(); 
    $receiver = Auth::user(); 
    $messages = \App\Message::Where(function($query) 
           { 
            $query->where("sender",$sender->id) 
             ->where("receiver",$receiver->id); 
           }) 
           ->orWhere(function($query) 
           { 
            $query->Where("sender",$receiver->id) 
             ->Where("receiver",$sender->id); 
           }) 
           ->get(); 
ました

しかし、それは$送信者$ receiverの変数が未定義であることを私に示しています。何か助けてください、私は両方のユーザーのメッセージを表示しようとしています。そしてどこで)単独でそれから2つ目を得たら私はそれらをマージします。

答えて

3

$send$receiverClosureに使用するには、次の操作を行います。

function ($query) use($sender, $receiver){ 

} 

この機能の範囲内の変数にアクセスすることができます。

解決策になります。

$messages = \App\Message::Where(function($query) use ($sender, $receiver) 
          { 
           $query->where("sender",$sender->id) 
            ->where("receiver",$receiver->id); 
          }) 
          ->orWhere(function($query) use ($sender, $receiver) 
          { 
           $query->Where("sender",$receiver->id) 
            ->Where("receiver",$sender->id); 
          }) 
          ->get(); 
2

あなたはuseで変数を通過する必要があります。

$messages = \App\Message::Where(function($query) use ($sender, $receiver) 
          { 
           $query->where("sender",$sender->id) 
            ->where("receiver",$receiver->id); 
          }) 
          ->orWhere(function($query) use ($sender, $receiver) 
          { 
           $query->Where("sender",$receiver->id) 
            ->Where("receiver",$sender->id); 
          }) 
          ->get();