【发布时间】:2018-02-28 00:07:36
【问题描述】:
我正在为 Web 应用程序构建 API。我正在构建的自定义路线之一可用于从数据库中获取所有使用来自特定位置的数据集的报告。目前这条路线有点瓶颈,我正在努力加快速度。
一份报告可以包含多组数据。数据也可以属于多个报告。数据表包含来自另一个(外部)数据库的数据集的所有位置。
为了澄清我的数据库,如下所示:
Report pivot table Data
|-----------| |-----------| |-------------|
| Report_id |-------<| Report_id |>-------| Data_id |
| | | Data_id | | Location_id |
|-----------| |-----------| |-------------|
我编写了以下脚本来使用某个数据集获取所有报告,但我觉得这样做可以更有效。
$reports = Report::whereIn('id',
\DB::table('report_data')->select('report_id')->whereIn('data_id',
\DB::table('data')->select('id')->where('location_id', '=', $id)
)
)->get();
我是否在这里遗漏了一些明显的东西,或者这是最好的方法?
【问题讨论】:
标签: php mysql laravel eloquent many-to-many