【问题标题】:Running “exists” queries in Laravel query builder在 Laravel 查询构建器中运行“存在”查询
【发布时间】:2017-07-28 13:08:14
【问题描述】:

我正在尝试执行此操作:

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'

但没有成功。
帮我做这件事。

【问题讨论】:

  • I think you best can rewrite it towhere null。不过我不确定。
  • 您好,欢迎来到 SO!请尝试更准确地回答您的问题,一些调试输出也会有所帮助。谢谢。

标签: php mysql html laravel


【解决方案1】:

我想你可以试试这个例子:

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();

希望对你有帮助!!!

【讨论】:

    【解决方案2】:

    试试:

    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();
    

    【讨论】:

      【解决方案3】:

      试试这个(我不检查真实数据,我只写逻辑):

      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'
      

      【讨论】:

      • 他要求提供与他提供的查询等效的 laravel 查询构建器,而不是不同的原始 SQL 查询
      【解决方案4】:

      尝试以下条件查询,如果有帮助,请告诉我:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 2013-02-23
        • 1970-01-01
        • 2021-09-25
        • 2016-04-15
        • 1970-01-01
        • 2017-02-15
        相关资源
        最近更新 更多