2015-04-30 1 views
2

В MySQL subqueries документации есть более exmaple подзапроса:Laravel - названный подзапрос с помощью Query Builder

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

Вот исходный запрос, который я хочу, чтобы преобразовать:

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

Есть ли способ сделать это в Laravel Query Builder без использования DB::raw()?

ответ

2

К сожалению, нет. У Query Builder есть свои ограничения, и более сложные запросы находятся за пределами его возможностей, поэтому DB::raw() есть. Но, если вы хотите, чтобы сделать его немного более элегантный и генерировать подзапрос с помощью Query Builder, вы могли бы сделать что-то вроде этого: это

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

отличная идея с 'toSql()' метод, спасибо! –

+0

Добро пожаловать. – Bogdan