Я провожу весь день, чтобы попытаться сделать запрос sql красноречивым.Я знаю, что могу использовать raw, если мне нужно, но мне любопытно, есть ли способ сделать это?
мой raw sql:
SELECT *
FROM (
SELECT 1 as own, id, up_date , top_list_end_date FROM advertisements WHERE top_list_end_date > now()
UNION ALL
SELECT 2 as own, id, up_date, top_list_end_date FROM advertisements WHERE top_list_end_date IS NULL
) a
ORDER BY own, up_date desc
В laravel я пытаюсь это:
$groupA = $adv->where('top_list_end_date', '>', Carbon::now());
$groupA->select('*')
->selectSub(function ($query) {
$query->selectRaw('1');
}, 'own');
$groupB = $restAdv->whereNull('top_list_end_date');
$groupB->select('*')
->selectSub(function ($query) {
$query->selectRaw('2');
}, 'own');
$result = $groupA->unionAll($groupB);
$result->orderBy('own', 'desc')->orderBy('up_date', 'desc')->get();
есть ли способ создать такой же выбор в eloquent?