((地点和地点)或(地点和地点))Laravel 5.2

( (Where and Where) OR (Where and Where) ) 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();

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

要在 Closure 中使用 $send$receiver,请执行以下操作;

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

您需要通过 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();