Фикстуры
Интересное название "фикстуры" скрывает под собой обычную загрузку тестовых данных в базу проекта.
Естественно это происходит в окружении dev, для которого мы создаем отдельную базу и прописываем подключение в файле ".env.dev"
Всеми этими процессами управляет DoctrineFixturesBundle.
В официальной документации очень продробно описан процесс установки данного бандла.
Рассмотрим пример использования (git repository)
В проекте есть модуль "Новости", загрузим туда несколько тестовых записей.
namespace App\DataFixtures;
use App\Entity\News;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
class AppFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$news1 = new News();
$news1->setName('В лиге боёв на голых кулаках установлен рекорд. Бойца нокаутировали за 3 секунды');
$news1->setAnons('13 ноября в Майами (штат Флорида, США) состоялся турнир лиги кулачных боёв Bare Knuckle FC 14. В его карде прошла встреча между Улисессом Диасом с Кубы и Донейллом Бенедетто, представляющим США.');
$news1->setContent('В бою был установлен исторический рекорд промоушена. Диас при помощи жёсткого правого бокового нокаутировал оппонента за три секунды. Это самая быстрая победа в истории Bare Knuckle FC, сообщает пресс-служба организации на странице в «Инстаграме».');
$news1->setPublish(new \DateTime());
$news1->setActive(true);
$manager->persist($news1);
$news2 = new News();
$news2->setName('Турция — Россия. Прогноз на матч: Черчесов прижмётся к воротам, судья уйдёт в тень.');
$news2->setAnons('15 ноября состоится матч Лиги наций Турция — Россия. Начало — в 20:00 мск. Букмекеры уже дали прогноз, в котором считают фаворитом хозяев: поставить на победу Турции в букмекерских конторах можно с коэффициентом 2.62. Успех России оценён букмекерами коэффициентом 3.13. Ставки на ничью принимаются с коэффициентом 3.44.');
$news2->setContent("Букмекерские коэффициенты на матч Лиги наций Турция — Россия 15 ноября 2020 года
Букмекеры считают, что матч Турция — Россия 15 ноября не получится результативным: тотал больше 2.5 мяча идёт за 2.34, а тотал меньше 2.5 мяча — за 1.74. Поставить на «обе забьют» можно за 1.98. На гол в первые 15 минут дают 3.70.");
$news2->setActive(true);
$news2->setPublish(new \DateTime());
$manager->persist($news2);
$manager->flush();
}
}
Далее запускаем команду
php bin/console doctrine:fixtures:load
Тестовые данные должны появиться в базе.