Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()
Posted
技术标签:
【中文标题】Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()【英文标题】:Laravel eloquent advanced where clause: variables not defined | I use use() 【发布时间】:2020-01-15 03:26:14 【问题描述】:我有这个代码:
$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();
【问题讨论】:
use
需要出现在您传递的每个回调中。
【参考方案1】:
有两个关闭,你错过了一个。检查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();
【讨论】:
以上是关于Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 雄辩的 SQL 查询与 OR 和 AND 与 where 子句