((何处和何处)或(何处和何处))Laravel 5.2

Kha*_* Bz 5 php where-clause eloquent laravel-5.2

我正在尝试创建((Where and Where)OR(Where and Where))经过大量搜索,我发现了这一点

    $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();
Run Code Online (Sandbox Code Playgroud)

但它告诉我$ sender$ receiver变量是未定义的,请帮忙,我正在尝试显示两个用户的消息,我还想我可以单独获取第一个(在哪里和哪里)然后得到第二个,然后我将合并它们.

Mat*_*row 9

要使用$send$receiverClosure执行下列操作;

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

}
Run Code Online (Sandbox Code Playgroud)

允许您访问该函数范围内的变量.

所以你的解决方案成了

$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();
Run Code Online (Sandbox Code Playgroud)