Как сделать рекурсивный запрос в Query Builder Laravel 8?
Подскажите пожалуйста как перевести в Query Builder Laravel 8 такой рекурсивный запрос в БД:
WITH recursive cte (id, parent) AS (
SELECT id,
parent
FROM users
WHERE parent = 3 UNION ALL
SELECT u.id,
u.parent
FROM users as u
INNER JOIN cte ON u.parent = cte.id
)
SELECT id
FROM cte;
JhaoDa,
$res = DB::select(DB::raw("WITH recursive cte (id, parent) AS (
SELECT id,
parent
FROM users
WHERE parent = 3 UNION ALL
SELECT u.id,
u.parent
FROM users as u
INNER JOIN cte ON u.parent = cte.id
)
SELECT id
FROM cte;"
));
Но это решение мне очень не нравится.
Ни в документации, ни во внутренних классах Laravel так и не нашел как работать с рекурсивными запросами.
JhaoDa,
Вот эта часть:
SELECT id,
parent
FROM users
WHERE parent = 3 UNION ALL
SELECT u.id,
u.parent
FROM users as u
INNER JOIN cte ON u.parent = cte.id
получается приблизительно так:
$query = User::select('id', 'parent')->join('cte', 'id', '=', 'cte.id');
$users = User::select('id')->where('parent', '=', 3)->unionAll($query)->dd();
Но не могу найти как подставить "WITH recursive cte (id, parent) AS ..."