我不知道我是否应该编辑旧问题,因为昨天答案对我有用,但由于某些变化,它不再存在。参考:How to get all jobs that user has not applied to in mySql
我必须使用表格job_postings
和job_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 = 1
和id = 2
有两个职位申请
一项工作申请id = 1
申请。 job_applies.status = 1
表示用户已申请该作业。
为了澄清,如果用户取消应用作业,它会将status
更新为4,这意味着已取消,因此实际上永远不会从job_applies表中删除这些行。
上面的查询仍然给出了0结果。我怎样才能找到工作?
答案 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();