Пользовательская команда Symfony3.4 - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать личную команду для изменения данных в моей базе данных. Я мог бы сделать это напрямую с помощью «SELECT *» ... но Symfony говорит, что хороший метод - создать команду для применения изменений в базе данных, и т.д. c ... Так что это проблема, с которой я сталкиваюсь :

Когда я переопределяю метод __construct по умолчанию, команда не регистрируется автоматически Symfony, что означает Symfony, просто игнорируйте ее. Когда я удаляю конструктор, моя команда работает, но я просто получаю нулевое значение из моего $ entitymanager (который является logi c, поскольку я ничего не помещаю в entitymanager?).

У кого-нибудь есть решение для меня, пожалуйста? Извините за мой плохой английский sh и спасибо за вашу помощь:)

Так вот мой код для команды

Ответы [ 4 ]

0 голосов
/ 23 января 2020
Here another alternative to use entityManager in your 3.4 since autowiring is not as good as 4.0 and above 
`class CreateUserCommand extends ContainerAwareCommand
{
 protected function execute(InputInterface $input, OutputInterface $output)
    {
        $entityManager = $this->getContainer()->get('doctrine')->getManager(); 
    }
}
`
0 голосов
/ 23 января 2020

Версия Symfony?

Однако попробуйте это:

use Symfony\Component\Console\Command\Command;
[...]

class CreateUserCommand extends Command
{
    protected static $defaultName = 'app:create-user';

    /**
    * @var EntityManager
     */
    private $entityManager;

    public function __construct(
        EntityManager $entityManager,
        string $name = null
    ) {
    parent::__construct($name);
    $this->entityManager = $entityManager;

    protected function configure()
    {
        parent::configure();
        [...]
    }

        protected function execute(InputInterface $input, OutputInterface $output)
    {
        [...]
    }

}
0 голосов
/ 23 января 2020

Вам нужно автоматически подключить EntityManagerInterface $ entityManager, а не EntityManager, и сделать так, чтобы автоматическое подключение было включено, если вам не нужно делать это вручную в вашем сервисе .yml

0 голосов
/ 22 января 2020

parent::__construct всегда должна быть первой строкой.

Переместите эту строку, и она должна нормально работать.

{
    parent::__construct();    
    $this->entityManager = $entityManager;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...