Laravel: subconsulta nombrada utilizando Query Builder

En la documentación de las subconsultas MySQL hay un ejemplo de subconsulta:

SELECT ... FROM (subquery) [AS] name ... 

Aquí está la consulta sin procesar que quiero transformar:

 select SUBQUERY_NAME.* from (select id, name from items) AS SUBQUERY_NAME 

¿Hay alguna manera de hacer esto en Laravel Query Builder sin usar DB::raw() ?

Desafortunadamente no. El generador de consultas tiene sus limitaciones y las consultas más complejas están fuera de su scope, por eso DB::raw() está ahí. Pero, si desea hacerlo un poco más elegante y generar la subconsulta utilizando el Query Builder, podría hacer algo como esto:

 $subquery = DB::table('items')->select('id', 'name')->toSql(); DB::table(DB::raw($subquery . ' as subquery_name'))->select('subquery_name.*');