【发布时间】:2018-05-12 19:16:48
【问题描述】:
在这种情况下,我有 Patients Model 和 Reports Model。患者有很多报告。
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use DB;
use Spatie\Permission\Traits\HasRoles;
class Patient extends Authenticatable
{
public function reports()
{
return $this->hasMany('App\Reports');
}
}
在一个视图中,我有一份所有患者的列表,其中包含针对他们的报告 ID。我们有一个搜索患者模块,我们可以在其中使用 Patient id 和 Report id 搜索 Patient。我能够满足使用
搜索 Patient id$data = Patient::where("id", "LIKE", "%{$search_patient}%")
但无法解决根据报告ID搜索患者和过滤结果的场景,因为报告的数据是使用hasMany关系检索的
下面是结果,其中 Patient 数据来自 Patient 模型,而 Reports 数据来自 Reports 模型,使用 hasMany 关系。我的要求是当我使用报告 ID 进行搜索时,我应该只能看到具有该报告 ID 的数据和用户信息。
[
{
"id": 1,
"group_id": 1000,
"date": "01-01-14",
"name": "Voss",
"address": "My Home 1",
"reports": [
{
"id": "ABC123",
"name": "Report1"
},
{
"id": "EDC123",
"name": "Report2"
}
]
},
{
"id": 2,
"group_id": 1000,
"date": "01-01-15",
"name": "Rosalia",
"address": "My Home 2",
"reports": [
{
"id": "RTC123",
"name": "Report3"
},
{
"id": "TYH123",
"name": "Report4"
}
]
}
]
【问题讨论】:
-
报告是否属于患者?在这种情况下,您必须定义一个 belongsTo 关系而不是 hasMany。当您尝试从患者那里检索报告时,您会遇到什么错误?
-
每位患者都有多个报告。我正在针对每条记录显示患者列表和报告 ID。现在如何根据报告 ID 搜索患者。你能再读一遍这个问题吗?
-
不,我明白了这个问题,但您没有显示与患者关系的报告模型。如果我阅读您的问题,我认为一份报告可以有多个患者,这似乎不太可能。这就是为什么我试图确定您的报告患者关系应该是什么。
-
好的...我的每个报告都与一个用户相关联。你有解决方案的 cmet 吗?
标签: laravel laravel-5 laravel-5.2 relationships