【发布时间】:2020-07-13 23:09:31
【问题描述】:
我正在编写一个 Eloquent 查询。条件如下:
- 有四个表:
- 表1:
medicare_advantage_table - 表 2:
medicare_advantage_plan_table - 表 3:
medicare_advantage_features_table - 表 4:
medicare_advantage_company_table
- 表1:
- 表 1 通过
medicare_advantage_features_pivot表与表 3 具有ManyToMany关系 - 表 1 与表 2 有
ManyToOne关系 - 表 1 与表 4 有
ManyToOne关系
现在我想查询来自medicare_advantage_table 提供的medicare_advantage_plan_id、medicare_advantage_company_id 和medicare_advantage_features_id 的所有记录作为数组。我写了这个雄辩的查询。它正在从medicare_advantage_table 获取所有记录,而无需从其他三个表中进行限制和选择,如下所示:
我在这里做错了什么?任何帮助将不胜感激
final public function getMedicarePolicies(Request $request): JsonResponse
{
$data = MedicareAdvantage::with([
'features' => static function (BelongsToMany $query) use ($request) {
$query->select('id', 'feature_name')->whereIn('id', $request->input('features') ?? []);
},
'company' => static function (BelongsTo $query) use ($request) {
$query->select('id', 'company_logo', 'company_name')->whereIn('id', $request->input('companies') ?? []);
},
'medicareAdvantagePlan' => static function (BelongsTo $query) use ($request) {
$query->select('id', 'medicare_advantage_plan_type')->whereIn('id', $request->input('plans') ?? []);
}
])->select('id', 'name', 'monthly_premium', 'primary_doctor_co_pay', 'specialist_co_pay', 'company_id')->get();
return response()->json($data, 200);
}
【问题讨论】: