Symfony не могу получить entity для relation поля в фикстуре

Не могу вытащить данные в entity из фикстуры.

Суть:

Есть Entity/Player, у которой есть relation ManyToOne к Entity/PlayerTypes. Данные для PlayerTypes уже заведены в таблице. Когда создается Player, нужно указать PlayerType, сеттер типа игрока у Entity/Player принимает на вход Entity/PlayerTypes.

Собственно, если бы я пользовался голым SQL, я бы просто вставил в запросе ID в виде цифры. Но доктрина сгенерировала мне сеттер который требует целую entity связанного класса на вход - как я понимаю такая философия orm, а потому решил вытаскивать его прямо в фикстуре в методе load(). И тут то все и заверте... ObjectManager упорно отказывается видеть данные в таблице, хотя в контроллере $playerType = $this->getDoctrine()->getRepository(PlayerTypes::class)->find(1); - все видит и оттуда игрок корректно создается.

Пробовал разные методы помимо find(), вплоть до написания собственного в репозитории - итог тот же. В контроллере все ОК, в фикстуре - ничего не находит. Подозреваю, что дело в ObjectManager, но в чем конкретно - пока не могу сообразить. $playerType = $this->getDoctrine()->getRepository(PlayerTypes::class); - класс репозитория при этом возвращает.

Подскажите пожалуйста, куда копать и правильно ли вообще я работаю с фикстурами)?

Фикстура

use App\Entity\Players;
use App\Entity\PlayerTypes;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;

class AppFixtures extends Fixture
{
    public function load(ObjectManager $manager)
    {
        //всегда возвращает null, ходя данные с id = 1 точно есть
        $playerType = $manager->getRepository(PlayerTypes::class)->find(1);

        $player = new Players();
        $player->setLogin('test');
        $player->setFidPlayertype($playerType);

        $manager->persist($player);
        $manager->flush();
    }
}

Ответы (2 шт):

Автор решения: zalex

Про правильность работы с фикстурами вы задались хорошим вопросом. Вкратце - вы не правильно работаете с фикстурами.

Для реализации связи между сущностями вам нужно использовать reference

Вот где это описано в документации

https://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html#sharing-objects-between-fixtures

→ Ссылка
Автор решения: Енот Людоед

Разобрался. Бандл фикстур действительно очищает все данные перед загрузкой фикстуры как уже упоминал @Dmitry Kozlov, поэтому при запуске фикстуры в консоли, нужно указать название таблиц, которые не нужно очищать. В моем случае, всего то нужно было запускать фикстуру вот такой командой:

symfony console doctrine:fixtures:load --purge-exclusions=player_types
→ Ссылка