如何获取用户尚未应用的所有广告

时间:2017-04-05 08:10:09

标签: mysql

我不知道我是否应该编辑旧问题,因为昨天答案对我有用,但由于某些变化,它不再存在。参考:How to get all jobs that user has not applied to in mySql

我必须使用表格job_postingsjob_applies。如何获得用户尚未申请的所有工作?

以下是我的job_postings表的列:

id, user_id, title, description, duties, salary, child_count, benefits, created_at, updated_at, deleted_at

以下是job_applies

的列
user_id, posting_id, status, created_at, updated_at, deleted_at

我尝试了什么:

    $job_postings =  DB::table('job_postings')
        ->select(
          'job_postings.title',
          'job_postings.description',
          'job_postings.duties',
          'job_postings.salary',
          'job_postings.child_count',
          'job_postings.benefits',
          'job_postings.created_at',
          'job_postings.id AS posting_id',
          'job_applies.status')
        ->leftJoin('job_applies', function($join)
          {
              $join->on('job_applies.posting_id', '=', 'job_postings.id')
              ->on('job_applies.user_id', '=', 'job_postings.user_id');
          })
          ->where('job_applies.status', "!=", 1)
          ->whereNull('job_postings.deleted_at')
          ->whereNull('job_applies.posting_id')
        ->get();

但是这给了我0个结果。目前,id = 1id = 2有两个职位申请 一项工作申请id = 1申请。 job_applies.status = 1表示用户已申请该作业。

修改

为了澄清,如果用户取消应用作业,它会将status更新为4,这意味着已取消,因此实际上永远不会从job_applies表中删除这些行。

上面的查询仍然给出了0结果。我怎样才能找到工作?

1 个答案:

答案 0 :(得分:0)

同时允许null值到状态列。

   $job_postings =  DB::table('job_postings')
            ->select(
              'job_postings.title',
              'job_postings.description',
              'job_postings.duties',
              'job_postings.salary',
              'job_postings.child_count',
              'job_postings.benefits',
              'job_postings.created_at',
              'job_postings.id AS posting_id',
              'job_applies.status')
            ->innerJoin('job_applies', function($join)
              {
                  $join->on('job_applies.posting_id', '=', 'job_postings.id')
                  ->on('job_applies.user_id', '=', 'job_postings.user_id');
              })
              ->where('job_applies.status', "!=", 1)
              ->whereNull('job_applies.status')
              ->whereNull('job_postings.deleted_at')
              ->whereNull('job_applies.posting_id')
            ->get();