Laravel雄辩的高级where子句:变量未定义|我使用 use()



我有这个代码:

$from = $data->chat_from_user;
$to = $data->chat_to_user;
Log::info($from); // 1
Log::info($to);   // 2
$result = DB::connection('mysql_live')->table('user_chatmessages')
->where(function ($query) use ($from, $to) {
$query->where('from_user', $from)->where('to_user', $to);
})->orWhere(function ($query) {
$query->where('from_user', $to)->where('to_user', $from);
})->orderBy('date_added', 'asc')->get();

我收到一个错误:Undefined variable: to.

我找到了很多主题,但解决方法始终是使用use().但它仍然告诉我变量没有定义。

例如,这非常有效:

$result = DB::connection('mysql_live')->table('user_chatmessages')
->where(function ($query) {
$query->where('from_user', '1')->where('to_user', '2');
})->orWhere(function ($query) {
$query->where('from_user', '2')->where('to_user', '1');
})->orderBy('date_added', 'asc')->get();

有两个闭包,你错过了一个。检查orWhere

$result = DB::connection('mysql_live')->table('user_chatmessages')
->where(function ($query) use ($from, $to) {
$query->where('from_user', $from)->where('to_user', $to);
})->orWhere(function ($query) use ($from, $to){ // <- here
$query->where('from_user', $to)->where('to_user', $from);
})->orderBy('date_added', 'asc')->get();

相关内容

最新更新