Если идеально стандартная, то можно пробовать CMS. Но Битрикс брать не советую. Мало того, что хуже многих, так ещё и за бешенные деньги. ModX, PrestaShop - вполне терпимые.
Мой опыт работы с говорит что выбор из CMS - попытка выбрать меньшее зло:)
Идея о том, что вы возьмёте CMS и вам не придётся её поддерживать - как минимум наивна. Поддержка не понадобится только мёртвому магазину.
Хайбулла Мусаев: У вас должен быть основной бандл проекта src/AppBundle. В нём делаете папку любую папку, в которой будут хранится сторонние классы, например Service. Туда кладёте свой файл прописав в него namespace AppBundle\Service;
При использовании импортируете класс:
use AppBundle\Service\FloydWarshall;
В коде вызываете $fl = new FloydWarshall([0 => [1], [1] => [0]]);
akillermind: я для админки всегда использую SonataAdminBundle. Там, где нужен близкий к CMS функционал использую ещё SonataPageBundle с некоторыми допиленными модулями. На сонате простая админка делается буквально за пару часов. Функционал - CRUD для всех необходимых таблиц, загрузка и управление файлами/картинками, редактирование почти всех текстов на всех страницах сайта, визуальное редактирование с CKEditor полных страниц, где это нужно.
Сергей Протько: я как-то сталкивался с парсиногом 300к товаров и добавлением их через доктрину. Простое отключение профилирования каждого отдельного запроса в дев окружении дало прирост в 40 раз, оставляя всю остальную инфу профилировщика. На время отладки это может быть очень удобно.
Да, в вашем случае простое многие-ко-многим не подойдёт. Тогда исправьте косяки как я описал про ваш вариант и всё должно работать.
Основная причина того, что у вас не сохранялось - это метод - addCollection(Breakagedemand $breakagedemand) в классе Test. Когда связь двухсторонняя, обязательно в этом методе должно быть связывание с обратной стороной: $breakagedemand->setTest($this);
Давид: не путайте написание универсального решения(по сути своей CMS) на фреймворке и написание конкретного единичного интернет-магазина. Во втором случае работы на порядок меньше. Делается только необходимый функционал без лишней универсальности.
Давид: фильтры делаются легко +2 дня где+то. +1 день для мультиязычности. Ещё день на подключение платёжных систем. 2-3 дня на авторизацию и личный кабинет с историей заказов. Больше ничего сложного не вижу.
Зато если нужно будет добавить что-то, чего нет в престе - времени уйдёт во много раз меньше. Учитывая четвёртый пункт в пожеланиях автора, и то, что магазин уже вырос из возможностей битрикса, я бы не рекомендовал использовать CMS.
Плюс ко всему, если это не первый магазин на симфони, то многие вещи остаются модулями от старого(корзина, формы заказа, админка обработки заказов и тд.)