Я смотрю, как можно создать подзапрос в 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-02-03, и датой ассоциированной стоимости (которая, вероятно, будет 2019-02-01, поскольку 2019-02-03 является воскресеньем ...)
Iоднако я понятия не имею, как я могу сделать это с Eloquent QueryBuilder, не возвращаясь к необработанным запросам sql ...
$value_date = '2019-02-03';
App\ExchangeRate::where('value_date', function($query) use ($value_date) {
... ??? ...
});