Я использовал Laravel, но я не фанат - так что я действительно не знаю "Laravel-ish" или что это такое.Если вы имеете в виду «что-то, что выглядит просто», то это может быть
$minDate = collect([
Model1::min('date1'),
Model2::min('date1'),
Model2::min('date2'),
])->min();
$maxDate = collect([
Model1::max('date1'),
Model2::max('date1'),
Model2::max('date2'),
])->max();
Это замечательно - но это 6 запросов к БД.
Один необработанный SQL будет
select min(min_date) as min_date, max(max_date) as max_date
from (
select min(date1) as min_date, max(date1) as max_date from table1
union all
select min(date1) as min_date, max(date1) as max_date from table2
union all
select min(date2) as min_date, max(date2) as max_date from table2
) x
или
select min(min_date) as min_date, max(max_date) as max_date
from (
select min(date1) as min_date, max(date1) as max_date
from table1
union all
select min(least(date1, date2)) as min_date,
max(greatest(date1, date2)) as max_date
from table2
) x
в зависимости от того, какие у вас индексы.Первый запрос выполняется лучше, когда каждый столбец даты имеет свой собственный индекс.