![](/img/trans.png)
[英]Laravel Eloquent Query with AND inside orWhere()
[英]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.