php - 如何在 Laravel 查询构建器|Laravel 中访问 orWhere() 内部的变量

标签 php laravel laravel-5

我正在尝试构建一个小的复杂查询,其中一切都很好OK,直到我尝试使用高级 where 条件。
在下面的代码中我收到一条错误消息

ErrorException: Undefined variable: user in file D:...**\app\Http\Controllers\ApiAuthController.php on line 285

第 285 行是 orWhere() 内的 $query->where("tbl_transactions.from_user_id", "=", $user->id) < br/>

 public function loadTransactions()
    {

        $token = JWTAuth::getToken();

        $user = JWTAuth::toUser($token);


        return DB::table('tbl_transactions')
            ->join('tbl_users as fromu', 'fromu.id', '=', 'tbl_transactions.from_user_id')
            ->join('tbl_users  as tou', 'tou.id', '=', 'tbl_transactions.to_user_id')
            ->select('tbl_transactions.id', 'tbl_transactions.from_user_id', 'tbl_transactions.to_user_id', 'tbl_transactions.amount', 'tbl_transactions.created_at', 'tbl_transactions.status', 'fromu.userid', 'tou.userid', 'tou.phone as tophone', 'fromu.phone as fromphone')
            ->orWhere(function ($query) {
                $query->where("tbl_transactions.from_user_id", "=", $user->id)// here the problem is (undefined **$user**)
                    ->where('tbl_transactions.to_user_id', '=', $user->id);
            })
            ->orderBy('tbl_transactions.id', 'desc')
            ->take(50)
            ->get();


    }

我是 Laravel 的新手。这里的任何人都可以帮助我,那就太好了。

最佳答案

您需要使用 use 子句使变量在闭包作用域中可访问。所以,改变这个:

->orWhere(function ($query) {

对此:

->orWhere(function ($query) use($user) {

关于php - 如何在 Laravel 查询构建器|Laravel 中访问 orWhere() 内部的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605858/

相关文章:

php - Codeigniter RESTful API

javascript - 通过注册表单提交时,图像未存储在 php 中的服务器上

php - 无法弄清楚是什么导致我的网站出现横向滚动

php - 如何使用 Mockery 模拟 Eloquent 模型?

laravel - 如何在 Laravel 中更新 Example.vue?

php - 如何返回记录不可用的错误消息?

php - 如何显示自定义字段值数组中的 Wordpress 帖子

php - Laravel 迁移外键引用具有两列的主键?

php - Laravel 5 如何在 select 子句中使用 Carbon 转换日期相关列?

php - 访问一个表中不属于其他两个表的数据