簡體   English   中英

在Laravel查詢構建器中運行“存在”查詢

[英]Running “exists” queries in Laravel query builder

我正在嘗試執行此操作:

SELECT * FROM `lms_test` 
WHERE NOT EXISTS 
   (SELECT * FROM `lms_studenttest` 
    WHERE `lms_test`.slug = `lms_studenttest`.testId 
    AND `lms_studenttest`.`studentId`='10a75c804b8851520993dedc42334c0f'
    ) 
AND `lms_test`.`testType`= 'Practice Test'

但是沒有成功。
幫我做。

我認為您可以嘗試以下示例:

A::whereNotExists(function($query){
  $query->select(DB::raw(1))
        ->from('B')
        ->whereRaw('A.id = B.id');
  })
 ->get();

要么

DB::table('lms_test')
        ->whereNotExists(function ($query) {
            $query->select('lms_studenttest.*')
                  ->from('lms_studenttest')
                  ->where('lms_test.testType', 'Practice Test')
                  ->where('lms_studenttest.studentId', '10a75c804b8851520993dedc42334c0f')
                  ->whereRaw('lms_studenttest.testId = lms_test.slug');
        })
        ->get();

希望對您有幫助!

嘗試:

DB::table('lms_test')
        ->whereNotExists(function ($query) {
            $query->select(DB::raw(1))
                  ->from('lms_studenttest')
                  ->where('lms_test.testType', 'Practice Test')
                  ->where('lms_studenttest.studentId', '10a75c804b8851520993dedc42334c0f')
                  ->whereRaw('lms_studenttest.testId = lms_test.slug');
        })
        ->where('testType','Practice Test')
        ->get();

試試看(我不檢查真實數據,我只寫邏輯):

SELECT *
    FROM `lms_test` 
    LEFT OUTER JOIN `lms_studenttest`
        ON `lms_test`.slug = lms_studenttest`.testId 
        WHERE `lms_studenttest`.testId IS NULL
        AND `lms_studenttest`.`studentId`='10a75c804b8851520993dedc42334c0f'
        AND `lms_test`.`testType`= 'Practice Test'

嘗試以下條件查詢,讓我知道它是否有幫助:

if (User::where('email', '=', Input::get('email'))->exists()) {
  // user found
}

暫無
暫無

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

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