Когда я начал писать на Yii2, это был отличный фреймворк для своего времени. Но за последние год-два я всё чаще слышал о Laravel и решил не просто почитать, а реально переехать на него. Проект был среднего размера — что-то вроде админ-панели с несколькими моделями, связями и бизнес-логикой. Половина года потом ушла на полный рефакторинг.
Что было шоком (в хорошем смысле)
Во-первых, Eloquent. В Yii2 я привык к ActiveRecord, но Eloquent на уровень выше. Особенно понравилось работать с отношениями и eager loading — вместо того чтобы мучиться с лишними запросами, пишешь .with() и всё. Код стал чище, а запросы оптимальнее.
Во-вторых, миграции. Yii2 миграции тоже были, но Laravel подошёл к этому более гибко. Каждая миграция — отдельный файл с понятной семантикой. Когда потом нужно разбираться, на каком коммите что поменялось в БД, это несравнимо удобнее.
Но главное — экосистема и философия. Laravel заточен на то, чтобы разработчик писал меньше лишнего кода. Есть готовые решения для аутентификации (Sanctum, Passport), очередей (Queue), кеша (Cache). В Yii2 это всё тоже есть, но чувствуется, что ты собираешь паззл. В Laravel это просто часть фреймворка.
Что было болезненно
Docs. Yii2 документация — это шедевр, есть почти всё, очень подробно. Laravel docs тоже хороши, но более высокоуровневые. Когда нужна конкретная деталь, иногда приходится лезть в исходники или в Stack Overflow.
Также первые два месяца постоянно спотыкался на синтаксисе. Yii2 более verbose, Laravel — более магичный. Привык к тому, что User::find($id) просто работает, не нужно думать о том, как эта магия реализуется под капотом.
Что я понял
Язык имеет значение. PHP 8+ реально меняет то, как ты пишешь код. Typed properties, match expressions, constructor property promotion — всё это делает Laravel код более выразительным и менее подверженным ошибкам.
Экосистема важнее, чем функции. У Yii2 и Laravel примерно одинаковая функциональность, но вокруг Laravel — Laracasts, Nova, Forge, Envoyer. Это ускоряет разработку в разы.
Миграция окупается. Первые два месяца было медленнее, чем на Yii2. К шестому месяцу скорость разработки выросла на 30-40%, потому что на некоторых вещах просто не нужно было думать.
Если вы на Yii2 и думаете, переходить ли — отвечу: стоит. Но рассчитывайте на адаптацию. Это не один день, это пару месяцев. Зато потом код будет писаться быстрее и приятнее.
// Пример того, как я теперь пишу запросы в Laravel
$users = User::with(['posts' => function ($query) {
$query->where('published', true)
->orderBy('created_at', 'desc');
}])
->where('active', true)
->paginate(15);