阅读(2783) (7)

Laravel 8 Selects 子查询

2021-07-07 10:18:51 更新

Eloquent 提供了高级子查询支持,你可以用单条查询语句从相关表中提取信息。举个例子,假设我们有一个目的地表 destinations 和一个到目的地的航班表 flightsflights 表包含一个 arrival_at 字段,表示航班何时到达目的地。

使用子查询功能提供的 selectaddSelect 方法,我们可以用单条语句查询全部目的地 destinations,以及抵达各目的地最后一班飞机的名称:

use App\Models\Destination;
use App\Models\Flight;

return Destination::addSelect(['last_flight' => Flight::select('name')
    ->whereColumn('destination_id', 'destinations.id')
    ->orderBy('arrived_at', 'desc')
    ->limit(1)
])->get();