Symfony как добраться до doctrine из static methode?

В Symfony достижение Doctrine из статического метода может быть достаточно простым при использовании Service Container, который является частью Symfony.

Для начала, убедитесь, что Doctrine установлен и настроен в вашем проекте Symfony. Если вы используете Symfony Flex, можно установить Doctrine, выполнив следующую команду:

$ composer require doctrine

Затем, убедитесь, что DoctrineBundle включен в вашем файле config/bundles.php:

DoctrineBundleDoctrineBundleDoctrineBundle::class => ['all' => true],

Теперь, предположим, что у вас есть класс MyClass, у которого есть статический метод, и вы хотите получить доступ к Doctrine из этого метода. Вам необходимо прокинуть ссылку на сервис контейнер в этот метод, чтобы можно было получить доступ к Doctrine через него.

use DoctrineORMEntityManagerInterface;
use SymfonyComponentDependencyInjectionContainerInterface;

class MyClass
{
    public static function myStaticMethod(ContainerInterface $container)
    {
        $doctrine = $container->get(EntityManagerInterface::class);
        
        // используйте Doctrine здесь
    }
}

Теперь, вы можете вызвать статический метод myStaticMethod и передать ссылку на сервис контейнер:

$myClass = new MyClass();
$myClass->myStaticMethod($container);

Если вы работаете в контроллере Symfony, вы можете получить доступ к сервис контейнеру, используя метод get:

use SymfonyBundleFrameworkBundleControllerAbstractController;

class MyController extends AbstractController
{
    public function myAction()
    {
        MyClass::myStaticMethod($this->container);
        
        // или можно также использовать $this->getDoctrine()
    }
}

Теперь у вас есть доступ к Doctrine из статического метода! Вы можете использовать Entity Manager или другие компоненты Doctrine для выполнения запросов к базе данных.