【问题标题】:Laravel eloquent advanced where clause: variables not defined | I use use()Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 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 需要出现在您传递的每个回调中。

标签: php sql laravel eloquent where-clause


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 2018-05-19
    • 2021-02-13
    • 1970-01-01
    • 2018-06-10
    • 2018-09-03
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多