我正在尝试构建一个小的复杂查询,其中一切都很好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/