簡體   English   中英

如何在laravel查詢生成器中訪問orWhere()內部的變量| Laravel

[英]How to access varible inside orWhere() in laravel query builder|Laravel

我試圖建立一點點復雜的查詢,使一切正常,直到嘗試使用高級where條件。
在下面的代碼中,我收到一條錯誤消息:

ErrorException:未定義的變量:文件285行上的文件D:... ** \\ app \\ Http \\ Controllers \\ ApiAuthController.php中的用戶

而第285行是orWhere() $query->where("tbl_transactions.from_user_id", "=", $user->id) orWhere()

 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手冊-匿名函數示例#3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM