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中雄辩的where子句中连接两列

如何在 laravel 雄辩的关系中使用 where 子句

Laravel 雄辩的 SQL 查询与 OR 和 AND 与 where 子句

使用 where 子句检索数据时,无论如何要检索计数 0 吗? (Laravel 雄辩)

Laravel 雄辩查询的高级 where

Laravel 在 withCount 方法上使用 where 子句