Я учусь использовать Laravel 5, но я нахожусь на этапе построения запросов, и, посмотрев на первые фрагменты кода, я думаю, что это действительно бесполезно, когда кто-то имеет базовые знания SQL.
Пример:
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
Какова цель изучения синтаксиса построителя запросов, если у программиста есть хотя бы базовые знания о языке SQL? Более того, перемещение сложных запросов из чистого языка SQL в функции построителя запросов выглядит как кошмар …
Кроме того, что он предоставляет интерфейс для того, когда вы хотите переключать механизмы баз данных (но, если честно, сколько раз вы видели, как большое приложение фактически переключает механизмы баз данных?), Я не вижу особых преимуществ. Это, конечно, более «красноречивый» и «ларавелловский» способ ведения дел, который сам по себе будет достаточно для продажи рамочным пуристам.
Во всяком случае, я думаю, что использование построителя запросов значительно усложнит работу с новым разработчиком. SQL — это универсальный язык, который знают почти все разработчики. Если в вашей команде есть новый участник, который плохо знает Laravel, скорее всего, ему понадобится целый день, чтобы освоиться с компоновщиком запросов.
Я пришел к согласию об использовании отношений в моих моделях Eloquent для простых объединений одной таблицы или двух объединений таблиц с использованием справочной таблицы. Но для всего, что требует более двух соединений, вам действительно нужно писать собственный SQL или использовать построитель запросов. И из двух вариантов я лично предпочитаю писать сырой SQL.
Других решений пока нет …