【问题标题】:How to get data from parent and child table on the basis of status where foreign key have different status for every row如何根据外键对每一行具有不同状态的状态从父表和子表中获取数据
【发布时间】:2020-06-23 15:34:35
【问题描述】:

我有 2 个具有外键关系的表。情况是我有一个case 和一个case 有很多revisions,每个revision 都有自己的status。如果仅更改外键表状态的特定行,我想获取父表数据和子数据

Case

id      case_no    patient_name  age
1       12564        abc         78
2       1256         lkj         63
3       125          bdhf        23

Case_Revisons

    id      case_id    revison         status
    1         1           0           assesemnt
    2         1           1           assesment
    3         1           2           treatment
    4         2           2           assesment
    5         3           1           assesment

我想要的是来自CaseCase Revisions 表的所有数据,其中状态为treatment

我尝试了什么:

$data['treatment_setup_cases'] = MedicalPrimaryCases::with('primaryCaseNo')
            ->where('impression_type', 1)
            ->where('status', 'treatment-setup')
            ->get();


 public function primaryCaseNo()
    {
        return $this->belongsTo(PrimaryCaseNo::class, 'primary_medical_case_id');
    }

【问题讨论】:

  • 请显示CaseRevision 之间的关系。这些MedicalPrimaryCasesPrimaryCaseNo 型号是什么?它们存储在哪些表中?听起来你在这里做了一些复杂的事情。

标签: mysql laravel eloquent


【解决方案1】:

在此处使用联接:

$the_data_you_want = Case::join('case_revisions', 'case.id', '=', 'case_revisions.case_id')
    ->where('status', 'treatment')
    ->get();

PrimaryCaseNoimpression_type 在问题的解释中没有提到,所以我忽略了它们,如果需要,您可以更改。

希望对你有帮助。

【讨论】:

  • Eloquent 的理念是不必处理连接和其他 SQL 语法。
  • Join 是 Eloquent 的一部分,实际上,Eloquent 文档中有一个小节专门针对它们:laravel.com/docs/7.x/queries#joins
  • 这得到了所有结果,但我想要的是不同的,比如看到 case_id 1 有三个不同状态的记录现在我需要如果子表的单个状态针对 case_id 1 不同我不想要那个父和孩子,除了我需要所有的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 2019-08-13
  • 2017-09-06
  • 1970-01-01
相关资源
最近更新 更多