【发布时间】:2019-02-07 15:18:49
【问题描述】:
我正在研究如何让 Laravel QueryBuilder 中的子查询与外部表连接。例如,我们有一个包含汇率、货币和 value_date 的表。
对于每种货币,我们都希望能够获取特定起息日的有效汇率。由于汇率在非工作日不会发生变化,这意味着对于周六和周日,周五的值仍然有效。有点明显和标准的情况。
在 SQL 中,我会这样查询:
SELECT currency, value_date, rate
FROM exchange_rates er
WHERE value_date = (
SELECT max(value_date)
FROM exchange_rates
WHERE currency = er.currency
AND value_date <= '2019-02-03'
)
这将返回所有汇率的列表(每种货币一个记录),汇率在 2019 年 2 月 3 日有效,以及关联起息日(可能是 2019 年 2 月 1 日,因为2019-02-03 是星期天...)
但我不知道如何使用 Eloquent QueryBuilder 做到这一点,而不会退回到执行原始 sql 查询...
$value_date = '2019-02-03';
App\ExchangeRate::where('value_date', function($query) use ($value_date) {
... ??? ...
});
【问题讨论】: