Laravel 8 Eloquent中無法正確使用whereNotExists子句的問題仍未解決
P粉287726308
P粉287726308 2023-09-05 16:08:35
0
1
635
<p>我有兩個表,一個是包含不同使用者的表,另一個是名為「factures」的發票表,它有一個外鍵userid,我稱之為client_id。我想要得到的是由某個管理員創建並且還沒有發票的客戶數量。這是我嘗試的程式碼:</p> <pre class="brush:php;toolbar:false;">$clients = User::select('id') ->where([['created_by',$membre_id],['role','Client']]) ->orWhere([['updated_by',$membre_id],['role','Client']]) ->whereNotExists(function($query) { $query->select(DB::raw('client_id')) ->from('factures') ->where('created_by',$member_id); })->get();</pre> <p>但這個查詢傳回了所有由$member_id建立的客戶,沒有例外。 我的查詢有什麼問題嗎? </p>
P粉287726308
P粉287726308

全部回覆(1)
P粉670838735

你嘗試了以下內容嗎:

$clients = User::select('id')
    ->where(function($query) use($member_id){
        $query->where([['created_by',$membre_id],['role','Client']])
            ->orWhere([['updated_by',$membre_id],['role','Client']])
    })
    ->whereNotExists(function($query) use($member_id){
        $query->select(DB::raw('client_id'))
            ->from('factures')
            ->where('created_by',$member_id);
    })
    ->get();
}

此答案僅在第一和第二個條件(created_by和updated_by)之間應用了OR條件,並且其結果與第三個條件的AND相結合。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板