具有复杂数据库架构的Laravel查询

时间:2018-10-03 11:20:01

标签: mysql laravel eloquent laravel-query-builder

任务(简称):为缺少 个文档

的求职者创建查询

实体和重要字段

  1. 求职者(id),
  2. 专业(id,jobseeker_id),
  3. 预约(id,jobseeker_id,professional_id,location_id,雇主ID)
  4. 文档(id,jobseeker_id,document_category_id),
  5. DocumentCategory(ID,名称)
  6. 位置(id)
  7. 雇主(id)

关系

  1. 求职者有很多专业(jobseeker_id)
  2. 求职者有很多约会(jobseeker_id)
  3. 求职者有很多文件(jobseeker_id)
  4. 专业有很多约会(profession_id)
  5. 文档(document_category_id)属于DocumentCategory
  6. 约会属于雇主(employer_id)
  7. 约会属于位置(location_id)
  8. DocumentCategory有很多雇主(很多)
  9. DocumentCategory具有许多位置(很多)

说明(简体)

求职者的主要职业是最后一个
求职者有主要任命,这是最后一个职业的最后任命

求职者必须拥有某些DocumentCategory的文件, 可以通过以下方式通过他/她的主要任命找到

  1. DocumentCategory->雇主应包含主要约会->雇主
  2. DocumentCategory->位置应包含主要约会->位置

如果此陈述为真,则需要DocumentCategory 否则,此DocumentCategory的文档缺少

问题/问题(扩展)

我应该对数据库进行两次查询:

  1. 获取所有至少有一个缺少 documentCategory(他们的零个文档至少有一个必需类别的求职者)
  2. 获取所有具有缺少文档类别的求职者。 (给定documentCategory名称时)

这应该是查询,我不能进行后处理以过滤检索到的数据,因为整个任务都在一个上下文中,在该上下文中,一对一的查询(与我的查询一起)被应用以过滤特定求职者。

我尝试过的事情

  1. 特定名称:

    $jobseekers = Jobseeker
        ::whereDoesntHave('documents', function($query) use($documentCategoryName) {
            $query->whereHas('documentCategory', function ($query) use ($documentCategoryName) {
                $query->whereName($documentCategoryName);
            });
        });
    

    我想我应该选择所有具有 required 特定documentCategory的求职者,并通过某种方式将它们与上述查询进行内部联接,但由于无法选择,尚不知道该怎么做通过查询进行主要约会。

  2. 如果未提供名称,而我们却找到求职者,而这些求职者至少有任何类别的其中一个缺乏文档,我也被困在这里。我们不能使用whereDoesntHave,因为如果Jobseeker具有至少一个 required documentCategory,将不会获取他,或者至少应该有一些我不知道的解决方法。

PS

整个关系和范围系统很大。该体系结构非常复杂,并且无法通过SQL进行工作。我试图尽可能地跳过一些奇怪的信息,请问我所描述的内容是否不足或不清楚。谢谢!

0 个答案:

没有答案