Миграция с Yii на Laravel
без потери данных и трафика
Yii был быстрым и удобным, но Yii 1 остался в эпоху PHP 5, а Yii 2 теряет поддержку и разработчиков: развивать проект становится дороже, а находить людей — сложнее.
Переводим приложение на Laravel: модели, контроллеры и фоновые задачи получают современные аналоги, админка становится удобной, а база данных переносится без потери истории.
Посмотрим вашу систему, данные и интеграции. Скажем, сколько это займёт, что переносится, а что придётся делать заново.
Ответ 15 мин
Почему уходят
Yii (1 и 2): что перестаёт устраивать
Каждый пункт — не «мода на новый фреймворк», а конкретная проблема, которая стоит денег
или времени. Проверьте, сколько из них про вас.
01
Yii 1 не работает на современном PHP
Проекты на Yii 1 остаются на PHP 5 или раннем PHP 7: они не получают обновлений безопасности, а хостинги постепенно отказываются от старых версий.
Что делаем: Переводим на Laravel с актуальным PHP: получаете поддерживаемый стек, обновления безопасности и нормальную поддержку инфраструктуры.
02
Yii 2 теряет поддержку и кадры
Развитие фреймворка замедлилось, разработчиков на рынке всё меньше, а найм превращается в долгий поиск.
Что делаем: Laravel — самый востребованный PHP-фреймворк: расширять команду и заменять людей проще, документации и специалистов больше.
03
Логика в контроллерах
Бизнес-правила живут прямо в экшенах контроллеров и моделях ActiveRecord: переиспользовать их нельзя, тестировать сложно, изменения рискованны.
Что делаем: Выносим логику в сервисы с тестами: её можно вызывать из разных мест — из веба, очередей, API и консольных команд.
04
Админка на GridView устарела
Таблицы, фильтры и формы собраны на виджетах Yii: интерфейс неудобен, каждый новый отчёт — отдельная разработка.
Что делаем: Админка на Livewire: живые таблицы, фильтры, массовые действия и понятные формы без перезагрузок и лишнего кода.
05
Фоновые задачи на cron
Отправка писем, выгрузки и обмены выполняются скриптами по расписанию: падение задачи видно только по последствиям, повторов нет.
Что делаем: Очереди с Horizon: повторные попытки, приоритеты, мониторинг и видимость неудачных задач вместо «тихих» сбоев.
06
Обновления страшно делать
Тестов нет, окружений нет, релиз — это загрузка файлов на прод. Поэтому проект замирает: изменения откладываются, долг растёт.
Что делаем: Покрываем критичные сценарии тестами, настраиваем окружения и релизы через CI/CD: изменения выходят небольшими и обратимыми.
Карта переноса
Что переносим: Yii (1 и 2) → Laravel
Переносится не «сайт», а данные, логика и связи между ними. Ниже — что именно
описывается и переносится, чтобы новая система работала как старая, только быстрее.
Код и логика
Контроллеры и экшены — в сервисы
ActiveRecord — в Eloquent
Виджеты — в Blade и Livewire
Хелперы и поведение — в классы
RBAC — в политики и права Laravel
Данные
Схема базы и миграции
Справочники и связи
История операций
Файлы и вложения
Пользователи и роли
Интеграции и задачи
Внешние API и обмены
Платёжные системы
Отправка почты и уведомлений
Фоновые задачи и расписания
SEO и публичная часть
Адреса и ЧПУ
Метаданные и заголовки
Sitemap и robots
Микроразметка
Честно
Что не переносится один в один
Мы не обещаем «то же самое, только на Laravel»: часть вещей переносится смыслом,
а не кодом. Об этом лучше знать до старта, чем обнаружить в процессе.
Расширения и виджеты Yii один в один: их функциональность реализуется на нативных средствах Laravel.
Структура кода фреймворка: контроллеры, модели и представления проектируются заново.
Cron-скрипты как механизм: заменяются очередями и планировщиком.
Конфигурация приложения: переносится смысл настроек, а не файлы.
Старые версии библиотек: заменяются поддерживаемыми аналогами.
Риски
Yii (1 и 2): риски и как мы их закрываем
У каждой системы свои ловушки. Мы называем их заранее и описываем, как закрываем —
до того, как они превратятся в сюрприз в середине проекта.
Логика в контроллерах
Часть правил неочевидна и не описана. Восстанавливаем поведение по коду и уточняем у заказчика перед переносом.
Специфика ActiveRecord
События, поведения и скоупы Yii не имеют прямых аналогов. Переносим их смысл в Eloquent-модели и наблюдатели.
Фоновые задачи в cron
Скрипты запускаются по расписанию и не логируют ошибки. Инвентаризируем их и переводим в очередь.
Отсутствие тестов
Критичные сценарии покрываем тестами до переноса, иначе нет способа доказать, что поведение сохранилось.
План
Как проходит миграция
Шесть этапов, каждый заканчивается проверяемым результатом. Бизнес продолжает работать:
старый контур не выключается, пока новый не докажет, что считает и отдаёт данные правильно.
011–3 недели
Аудит и карта системы
Разбираем текущую систему: схема данных, точки входа, интеграции, задачи по расписанию, реальные бизнес-правила. На выходе — карта системы и оценка объёма.
022–3 недели
Архитектура и план переноса
Проектируем схему данных на Laravel, выбираем стратегию перехода, описываем этапы, критерии приёмки и план по SEO-редиректам.
032–6 недель
Стенд и перенос данных
Поднимаем новый контур, переносим данные, сверяем суммы, связи и справочники. Разрабатываем модули, начиная с тех, что дают деньги.
04по ситуации
Параллельная работа
Новый и старый контуры работают одновременно: разделы переключаются по одному после сверки. Пользователи не замечают переезда.
052–5 дней
Переключение трафика
Переводим домен, включаем 301-редиректы по карте URL, проверяем sitemap, счётчики и цели. Контролируем индексацию и ошибки.
062–4 недели
Стабилизация и передача
Следим за метриками, правим найденное, обучаем команду, передаём документацию, доступы и регламенты.
Особенности плана: Yii (1 и 2)
Инвентаризация задач по cron и консольных команд — обязательный шаг: их легко забыть, а они влияют на данные.
Схему базы переносим как есть на первом шаге и нормализуем позже, чтобы не смешивать переезд и рефакторинг.
Админку можно переписать раньше публичной части: это ускоряет работу сотрудников и снижает нагрузку на поддержку.
Публичную часть переключаем после того, как критичные сценарии покрыты тестами и проходят на стенде.
SEO и трафик
Трафик из поиска не должен просесть
Главный страх при переезде — потерять позиции. Поэтому SEO-часть мы делаем до переключения
и контролируем после, а не «посмотрим, что будет».
Карта URL до переезда
Собираем все адреса старой системы из базы, sitemap и логов: карточки, категории, пагинация, фильтры, старые ЧПУ.
301-редиректы 1:1
Совпадающие адреса сохраняем, остальные закрываем постоянными редиректами — без «главной страницы вместо товара».
Метаданные и заголовки
Переносим title, description, H1 и тексты, а не генерируем заново: поиск уже знает эти страницы.
Микроразметка
Товары, хлебные крошки, отзывы, FAQ — разметка сохраняется и валидируется заново на новом контуре.
Sitemap и robots
Актуальная карта сайта, корректные правила обхода, отсутствие закрытых от индексации нужных страниц.
Счётчики и цели
Метрика, аналитика, цели и события переносятся и проверяются до переключения, чтобы не потерять статистику.
Мониторинг после релиза
Следим за ошибками 404/500, индексацией и позициями первые недели — редиректы и обход проверяются на живом трафике.
Стек
На что переводим: Laravel и вокруг
Открытые технологии без лицензий. Стек подобран так, чтобы систему могла развивать
любая PHP-команда, а не только её автор.
Интерфейсы без перезагрузок: админка, таблицы, формы, фильтры.
PostgreSQL или MySQL
Нормализованная схема, индексы под реальные запросы, реплики для отчётов.
Redis
Кеш, сессии и очереди вместо файлового кеша и cron-скриптов.
Horizon и очереди
Фоновые задачи с повторами, приоритетами и мониторингом.
Тесты и CI/CD
Покрытие критичных сценариев, отдельные окружения, релизы и откаты в одну команду.
Наблюдаемость
Логи, метрики и алерты: видно ошибки и деградацию до жалоб пользователей.
API и интеграции
Явные контракты обмена с 1С, платежами, доставкой, CRM и маркетплейсами.
Когда миграция не нужна
Мы не берём проект, если переход не окупается: иногда дешевле починить текущую систему
или обновить её. Честный ответ экономит вам бюджет.
Проект на Yii 2 с небольшой кастомизацией: иногда дешевле обновить версию и починить узкие места.
Бизнес-логики почти нет: приложение в основном показывает данные из уже готовых источников.
Планируется замена продукта готовым SaaS-решением, а не собственная разработка.
Форматы работ
Как можно начать
Можно взять только аудит и план — и внедрять своими силами. Можно мигрировать этапами.
Можно переписать систему целиком. Выбор зависит от состояния кода и от того, сколько бизнес
готов ждать.
Аудит и план миграции
Нужно понять объём работ, риски и стоимость до принятия решения.
Карта системы и данных
Схема данных на Laravel
План этапов и критерии приёмки
План SEO-редиректов
Оценка сроков и бюджета
фиксированная стоимостьАудит можно внедрять своими силами
Подход разный. В Yii 1 больше кода на старом PHP, часть библиотек несовместима с PHP 8, поэтому чаще переписываем модули целиком. В Yii 2 структура ближе к современной, поэтому часть логики переносится с меньшими изменениями. На аудите смотрим версию, зависимости и объём кастомного кода.
Переносится ли база данных как есть?
Да, схема переносится на первом этапе без изменений — это снижает риск. Нормализацию и оптимизацию делаем отдельным этапом, когда приложение уже работает на Laravel и есть тесты, доказывающие корректность.
Что будет с админкой?
Админку собираем на Livewire: живые таблицы с фильтрами, массовые действия, формы с валидацией и роли. Обычно это первое, что замечают сотрудники: работа ускоряется, а типовые отчёты перестают требовать разработчика.
Насколько срок миграции предсказуем?
После аудита — достаточно предсказуем: мы видим объём кода, зависимостей и интеграций. Проект делим на этапы с проверяемыми результатами, поэтому отклонения видны рано, а не в конце. Ориентир: аудит 1–2 недели, перенос 8–16 недель для приложения среднего размера.
Можно ли обновить Yii вместо перехода на Laravel?
Иногда да: если проект на Yii 2 и кастомного кода немного, обновление и рефакторинг могут быть дешевле миграции. Мы скажем об этом прямо на аудите — продавать переход там, где достаточно обновления, мы не будем.
Как переносится база данных при миграции?
Схема переносится целиком, включая историю операций: заказы, платежи, заявки, справочники. Перед переносом проверяем целостность данных и чистим дубли. На новом контуре схема нормализуется: появляются типы, ограничения и внешние ключи, которые не дают создавать несогласованные записи. Сверку делаем выборочно вручную по ключевым таблицам, а не только отчётом из скрипта.
Как гарантируется, что трафик из поиска не просядет?
Карта URL собирается до переезда: из базы, sitemap и логов сервера. Совпадающие адреса сохраняются один в один, остальные закрываются 301-редиректами. Метаданные, заголовки и микроразметка переносятся, а не генерируются заново. После переключения мы следим за ошибками, индексацией и позициями — обычно это 2–4 недели наблюдения.
Что происходит с интеграциями: 1С, платежи, доставка, CRM?
Каждая описывается до разработки: что передаётся, как часто, что считается успехом и как видеть ошибки. В новой системе обмены становятся явными: журнал синхронизации, повторные попытки, алерты. Платёжные модули подключаем на тестовых аккаунтах до переключения трафика.
Можно ли обойтись без полного переноса?
Да. Варианты: укрепить текущую систему (закрыть уязвимости, добавить тесты, навести порядок в бэкапах), вынести отдельный модуль на Laravel и связать через API или шину, либо рефакторить по частям. На аудите мы говорим прямо, какой путь дешевле — иногда это отказ от полного переноса.
Сколько стоит миграция?
Стоимость зависит от объёма данных, числа интеграций, количества кастомной логики и требований к сохранению SEO. Аудит и план миграции фиксируются по цене заранее, дальше проект считается этапами с понятным результатом на каждом. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных, истории и трафика.
Что будет с сотрудниками, которые работают в старой системе?
Мы меняем систему, а не процессы: админка собирается под их задачи, а обучение входит в проект. Обычно новая админка нравится больше: понятные формы, живые таблицы, отчёты без участия разработчика. Для сложных мест пишем короткие инструкции.
Кому принадлежат код и данные после миграции?
Вам. Код, схема данных, документация, доступы и инфраструктура оформляются на вас с самого начала. Мы не удерживаем проект в своём контуре: его можно передать другой команде, а документация описывает систему так, чтобы ей мог заняться любой PHP-разработчик.
Что нужно от нас для старта?
Доступ к исходному коду и базе данных (или их копиям), список интеграций и сервисов, контакт человека, который знает бизнес-логику и процессы, и данные о том, что критично не потерять при переезде. Дальше мы работаем сами и показываем промежуточные результаты.
Следующий шаг
Разберём вашу систему
Посмотрим код, базу и интеграции. Скажем, что переносится, что придётся делать заново,
сколько это займёт и как сохранить трафик. Без обязательств.
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie
(Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия —
от него можно отказаться. Подробнее:
Политика использования cookie
и
обработка персональных данных.
Настройки cookie
Выберите, какие категории cookie можно использовать. Необходимые отключить нельзя:
без них не работают формы и сессия.