Khalil Bz Khalil Bz - 2 months ago 32
PHP Question

( (Where and Where) OR (Where and Where) ) Laravel 5.2

I am trying to create ( (Where and Where) OR (Where and Where) ) And after a lot of searching I found this

$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();


But it's showing me that the $sender and the $receiver variables are undefined , Any help please , I'm trying to show the messages of the both users, I thought also that I can get the first (where and where) alone and then get the second one then I'll merge them.

Answer

To use $send and $receiver within a Closure do the following;

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

}

Allowing you to access the variables within the scope of that function.

So your solution becomes;

$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();
Comments