1) Что-то мне подсказывает что валится оно на чем-нибудь вроде $product->find() а не на том что вы привели.
2) Лучше делать так
$this->get('doctrine.orm.entity_manager')->getRepository(Organization::class)
3) А еще лучше регистрировать репозитории как сервисы
4) А еще лучше, не наследоваться от доктриновский репозиториев и использовать свои, которым в конструктор передавать entity manager и там уже делать что душе вздумается. Пример (так как это должно быть, в реальных проектах можно упрощать)
class DoctrineOrganizationRepository implements OrganizationRepository
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function getOrganization(int $id) : Organization
{
$organization = $this->em->find(Organization::class, $id);
if (!$organization) {
throw new OrganizationNotFoundException();
}
return $organization;
}
}
По сути наше приложение не должно слишком много знать о доктрине. Ну и еще удобнее регистрировать такие сервисы:
services:
organization_repository:
class: MyApp\Service\Doctrine\DoctrineOrganizationRepository
autowire: true
5) Не дробите приложение на бандлы. Они для того что бы реюзать код. Если вы дробите систему на бандлы с мыслью "может потом реюзаю" - это пример преждевременной оптимизации. Вам нужен только AppBundle и то только ради маленьких шорткатов.
Зависимостей между бандлами быть не должно. Они могут зависеть от библиотек. но не от бандлов.